Compare commits

..

45 Commits

Author SHA1 Message Date
JonKazama-Hellion 1d3b429f1b style(format): apply csharpier and markdownlint reflow
Security / scan (push) Successful in 23s
Build / Build (Release) (push) Successful in 31s
Forge Announce / Post changelog to Hellion Forge (push) Successful in 6s
Release / Build and attach release ZIP (push) Successful in 41s
2026-05-23 09:07:01 +02:00
JonKazama-Hellion c640a05a8a Merge branch 'feature/v1.5.6' 2026-05-23 08:59:54 +02:00
JonKazama-Hellion 73a8532e26 release(v1.5.6): rewrite manifest for the settings overhaul 2026-05-23 08:52:18 +02:00
JonKazama-Hellion 32840623ff i18n(settings): translate v1.5.6 first-wave control labels 2026-05-23 08:35:08 +02:00
JonKazama-Hellion 2acac78b4c refactor(settings): retitle data and about cards to match merged scope 2026-05-23 08:28:51 +02:00
JonKazama-Hellion ce4c5d9cf9 i18n(settings): translate new section titles and prune orphan keys 2026-05-23 05:04:47 +02:00
JonKazama-Hellion 4cf7aa5501 refactor(settings): merge integrations into the About tab, finalize seven tabs 2026-05-23 04:11:18 +02:00
JonKazama-Hellion 0da4751b0f refactor(settings): merge privacy into the Data and Privacy tab 2026-05-23 03:20:04 +02:00
JonKazama-Hellion ee39fd0eec refactor(settings): rebuild the per-tab panel into sub-sections 2026-05-23 02:22:55 +02:00
JonKazama-Hellion 78efd654e6 refactor(settings): rebuild the Window tab into three sections 2026-05-23 01:30:41 +02:00
JonKazama-Hellion d3cea8c6c0 refactor(settings): rebuild the Chat tab and pull in tooltips and novice network 2026-05-23 00:57:28 +02:00
JonKazama-Hellion 3058e6bc6d refactor(settings): merge fonts, colours and window style into the Appearance tab 2026-05-23 00:05:49 +02:00
JonKazama-Hellion 8a8c6ccae2 refactor(settings): rebuild the General tab into collapsible sections 2026-05-22 23:07:01 +02:00
JonKazama-Hellion eafa20748c refactor(settings): wire the section-open signal, rename tab files 2026-05-22 22:26:04 +02:00
JonKazama-Hellion b3fc96f424 revert(ui): remove the per-tab regex filter 2026-05-22 21:42:43 +02:00
JonKazama-Hellion a18ac130b3 release(v1.5.6): manifest bump, changelog and forge post 2026-05-22 17:57:01 +02:00
JonKazama-Hellion c652b102fc feat(ui): add sender name display options
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-22 17:20:51 +02:00
JonKazama-Hellion ba4cd918da feat(ui): warn before sending plugin-only symbols 2026-05-22 16:41:06 +02:00
JonKazama-Hellion a6e2a75422 feat(ui): add optional regex filter per tab 2026-05-22 15:41:48 +02:00
JonKazama-Hellion d05770fd6d feat(ui): separate opacity for focused and unfocused chat window 2026-05-22 15:03:56 +02:00
JonKazama-Hellion 921dd701c4 feat(audio): add custom sound volume slider 2026-05-22 14:28:22 +02:00
JonKazama-Hellion ba30b1e742 feat(config): bump schema v18 to v19 2026-05-22 14:03:36 +02:00
JonKazama-Hellion 5771573a94 fix(ci): keep bilingual forge-announce embeds from merging
Both the DE and EN embed carried the same release url, which makes
Discord merge url-identical embeds and render only the first embed's
description. The EN block was posted and stored but never shown, so
every auto-announce from v1.4.6 onward displayed German only.

Drop the url from the EN embed so Discord stacks both as separate
cards with both descriptions visible.
2026-05-22 09:56:17 +02:00
JonKazama-Hellion d4bcbc93e2 Merge branch 'feature/v1.5.5'
Security / scan (push) Successful in 23s
Build / Build (Release) (push) Successful in 29s
Forge Announce / Post changelog to Hellion Forge (push) Successful in 6s
Release / Build and attach release ZIP (push) Successful in 36s
2026-05-21 21:27:57 +02:00
JonKazama-Hellion ca801a006a release(v1.5.5): manifest bump, changelog and forge post 2026-05-21 20:43:54 +02:00
JonKazama-Hellion cc1c05add0 feat(ui): add bundled custom notification sounds
Adds three embedded WAV files as additional notification sound choices
(ids 17-19) alongside the existing 16 game sounds. Playback via NAudio
WaveOutEvent/WinMM, which works correctly on Wine/Linux.
2026-05-21 20:07:09 +02:00
JonKazama-Hellion 969d5e6aa6 feat(ui): add a preview button for the per-tab notification sound 2026-05-21 19:01:45 +02:00
JonKazama-Hellion aaeca76bfd fix(branding): enlarge fox banner and add a contrast card 2026-05-21 19:01:42 +02:00
JonKazama-Hellion 4f6c916bd9 feat(branding): replace ASCII fox banner with embedded image 2026-05-21 18:47:25 +02:00
JonKazama-Hellion ce7dda9e48 fix(ui): null-guard agent access and refocus input after token insert
AgentMap.Instance() and AgentChatLog.Instance() can return null during
zone transitions. Capture pointers into locals and short-circuit the
FlagMarkerCount/LinkedItem deref when null so the entries are correctly
greyed out without faulting. Add Activate/ActivatePos after each append
so the input box regains focus and the caret lands after the token,
matching the SymbolPicker and AutoComplete insert paths.
2026-05-21 18:15:12 +02:00
JonKazama-Hellion 80699b27e4 feat(ui): insert map-flag and item-link tokens from chat input 2026-05-21 18:08:49 +02:00
JonKazama-Hellion 3296a12516 style: drop task references from cycle code comments 2026-05-21 14:52:58 +02:00
JonKazama-Hellion 81123ccddf style: apply csharpier formatting to cycle files 2026-05-21 14:46:19 +02:00
JonKazama-Hellion 636a62814f fix(ui): isolate scroll-button state from pop-outs and tidy toolbar
Guard _childScrolledUp writes behind updateScrollState param so pop-out
windows no longer contaminate the main window's scroll state. Widen the
honorific title slot budget when the scroll button is visible, fix stale
comment, and apply csharpier formatting.
2026-05-21 14:43:26 +02:00
JonKazama-Hellion b5aebaad35 fix(ui): keep scroll-to-bottom button on the toolbar row 2026-05-21 14:32:25 +02:00
JonKazama-Hellion bd75f2453c fix(ui): move scroll-to-bottom button into the chat header toolbar
Drop the three-attempt floating overlay entirely. The button now lives in
the chat header toolbar (DrawScrollToBottomToolbarButton), visible only when
the user is scrolled above the live end. Toolbar layout: honorific slot,
scroll button, pop-out button flush-right -- pop-out position unchanged.
2026-05-21 14:22:58 +02:00
JonKazama-Hellion c909d1646b fix(ui): draw scroll-to-bottom button in a standalone overlay window
Button drawn in the parent window over the ##chat2-messages child was never
clickable: ImGui resolves g.HoveredWindow to the child for that screen rect, so
ItemHoverable rejects any item submitted in the parent. A top-level Begin/End
window is a sibling in the window list and wins the hit-test for its own rect.
ownerId parameter keeps the window name distinct between the main window and
each pop-out, preventing Begin/End collisions when both render in the same frame.
2026-05-21 14:10:01 +02:00
JonKazama-Hellion 5781be2e41 feat(ui): pin failed-tell log-message ids and drop discovery logging 2026-05-21 13:46:42 +02:00
JonKazama-Hellion 65fea0e5f5 fix(ui): render scroll-to-bottom button as a parent overlay
The button was drawn inside the ##chat2-messages child via SetCursorPos,
which inflated ContentSize.y / ScrollMaxY each frame (causing positional
drift) and was clipped by the scrollbar's inner clip rect (causing right-
edge cutoff). Move it to the parent window using screen-space coordinates
captured before the child opens; the scroll state is cached inside the
child while GetScrollMaxY/Y still refer to the child's scroll context.
2026-05-21 13:46:42 +02:00
JonKazama-Hellion 3de6e4a3cb feat(ui): add scroll-to-bottom button to the chat log 2026-05-21 13:03:36 +02:00
JonKazama-Hellion e0289962b1 style: remove em-dashes from new code comments 2026-05-21 12:10:17 +02:00
JonKazama-Hellion 95375c8516 feat(ui): auto-focus tab rename and raise buffer to 512 2026-05-21 11:16:53 +02:00
JonKazama-Hellion 36ea8ddcfc feat(ui): add per-tab notification sound for inactive tabs 2026-05-21 10:39:09 +02:00
JonKazama-Hellion 246f0e2511 feat(ui): notify on failed tell via RaptureLogModule hook 2026-05-21 10:00:53 +02:00
JonKazama-Hellion 2e81c42e3b feat(config): bump schema v17 to v18 2026-05-21 09:20:21 +02:00
78 changed files with 8201 additions and 4638 deletions
+10 -5
View File
@@ -147,10 +147,14 @@ jobs:
}
Write-Host "Embed-Caps OK: de=$($deDesc.Length)/4096, en=$($enDesc.Length)/4096, total=$totalChars/6000"
# ---------- Embed-Payload bauen (zwei Embeds, gleiche url) ----------
# Sharing the same `url` tells Discord to render both embeds as a
# single contiguous card block. The title sits on the first embed,
# the footer + timestamp on the last so it reads as one post.
# ---------- Embed-Payload bauen (zwei gestapelte Embeds) ----------
# Discord MERGES embeds in one message that share the same `url`
# (the image-gallery merge) and then renders only the FIRST embed's
# description — every following embed contributes images only. So
# only the DE embed carries the release URL; the EN embed stays
# url-less, which makes Discord stack both as separate cards with
# both descriptions visible. Title sits on the first embed, footer
# + timestamp on the last so it still reads as one post.
$payload = [ordered]@{
username = "Forge Herald"
avatar_url = "https://gitea.hellion-forge.cloud/JonKazama-Hellion/HellionChat/raw/branch/main/HellionChat/images/icon.png"
@@ -167,7 +171,8 @@ jobs:
description = $deDesc
},
[ordered]@{
url = $releaseUrl
# Deliberately no `url` — a shared url would make Discord
# merge this embed into the first and drop the EN body.
color = 12730636
description = $enDesc
footer = [ordered]@{ text = $footerText }
+11
View File
@@ -0,0 +1,11 @@
---
subtitle: "Backlog-Sync Tab-Features"
versionsnatur: "Bundle-Patch (Hälfte 1 von 2)"
---
- **Fehlgeschlagener Tell.** Geht ein gesendeter Tell nicht durch (Empfänger offline, in einer Instanz oder blockiert), erscheint jetzt ein Warn-Toast statt dass die Systemmeldung durchrauscht. Abschaltbar in den Einstellungen unter Chat.
- **Ton pro Tab.** Jeder Chat-Tab kann einen Benachrichtigungston spielen, wenn eine Nachricht eintrifft, während ein anderer Tab aktiv ist. Zur Wahl stehen die 16 Spiel-Chat-Sounds oder drei mitgelieferte Hellion-Sounds, mit einem Vorhör-Knopf. Standardmäßig aus, hört auf den globalen Sound-Schalter.
- **Tab umbenennen.** Das Umbenennen-Feld im Rechtsklick-Menü fokussiert sich beim Öffnen von selbst und nimmt jetzt bis zu 512 Zeichen.
- **Sprung ans Ende.** In der Chat-Kopfleiste erscheint ein Knopf, sobald man vom aktuellen Ende weggescrollt ist. Ein Klick springt zurück zur jüngsten Nachricht.
- **Karten- und Item-Links.** Kartenmarkierung und verlinktes Item lassen sich aus dem Rechtsklick-Menü der Chat-Eingabe einfügen.
- **Fuchs-Banner.** Das Hellion-Forge-Fuchs-Motiv im Einrichtungs-Assistenten und im Informations-Tab ist jetzt ein echtes Bild statt ASCII-Kunst.
- Schema-Bump auf v18, rein additiv.
+11
View File
@@ -0,0 +1,11 @@
---
subtitle: "Settings Overhaul + Filter & Notification Polish"
versionsnatur: "Settings-Overhaul-Release"
---
- **Settings komplett neu strukturiert** — die zehn alten Tabs sind auf sieben zusammengefasst (Allgemein, Aussehen, Chat, Fenster, Kanäle, Daten & Privatsphäre, Über). Jeder Tab gliedert sich jetzt in Sektionen, die beim Reingehen eingeklappt sind. Controls innerhalb einer Sektion sind nach Typ gruppiert. Tabs-Tab im Per-Tab-Panel ebenfalls in Sub-Sektionen aufgeteilt.
- **Absender-Namen anpassbar** — neue Optionen in Chat → Nachrichten für das Namensformat (Voll / Vorname / Initialen) und das Welt-Suffix (Nie / Andere Welten / Immer).
- **Pre-Send-Warnung für Plugin-Symbole** — beim Senden einer Nachricht mit Symbolen, die nur HellionChat-User sehen, kommt eine Warnung. Verhindert leere Kästchen bei anderen.
- **Getrennte Fenster-Deckkraft** — Aktiv vs. Inaktiv. Aktiv wie bisher; Inaktiv über einen zweiten Slider unter Aussehen → Fenster-Stil.
- **Lautstärke für eigene Notification-Sounds** — Slider in Allgemein → Sound, im Kanäle-Tab pro Tab nochmal angezeigt. Wirkt nur auf die drei mitgelieferten Custom-Sounds, die 16 Game-Sounds bleiben unverändert.
- **Regex-Filter pro Tab gestrichen** — kurz dabei, dann verworfen: der eingebaute FFXIV-Blackword-Filter deckt das ab.
- **Lokalisierung erweitert** — neue Section-Titel und v1.5.6-Controls in allen 24 Sprachen, maschinell übersetzt. Native-Review läuft weiter über den Hellion Forge Discord.
+22
View File
@@ -0,0 +1,22 @@
using Dalamud.Interface.Textures;
namespace HellionChat.Branding;
// UI sibling of HellionForgeAscii.FoxMini: the embedded Hellion Forge fox
// banner PNG. Uses ITextureProvider.GetFromManifestResource, a "Get" shared
// texture, so Dalamud owns the cache and lifetime. No manual dispose, no async
// handling in the plugin. Static to mirror HellionForgeAscii (zero injectable
// deps; Plugin.TextureProvider is a static [PluginService]).
internal static class FoxBannerTexture
{
private const string ResourceName = "HellionChat.Branding.fox-banner.png";
// Resolved fresh on every access. Dalamud keeps the shared texture cached
// internally and decodes it asynchronously, so GetWrapOrDefault() returns
// null for the first few frames until the decode finishes.
public static ISharedImmediateTexture Shared =>
Plugin.TextureProvider.GetFromManifestResource(
typeof(FoxBannerTexture).Assembly,
ResourceName
);
}
+3 -10
View File
@@ -1,25 +1,18 @@
namespace HellionChat.Branding;
// Lazy-loaded provenance art that ships embedded with the DLL. Two
// variants:
// Lazy-loaded ASCII art that ships embedded with the DLL.
//
// - FoxBanner: the full-size silhouette with "Hellion Forge" inside
// the body — rendered in the first-run wizard and the Information
// tab as a small "about the makers" anchor.
// - FoxMini: the four-line fox-head + curly-tail that gets stitched
// into the DI-logger bootstrap line so an xllog reader sees the
// same signature on every plugin load.
//
// Both files live as embedded resources under HellionChat.Branding.* so
// the plugin DLL is self-contained no on-disk asset lookup that could
// The file lives as an embedded resource under HellionChat.Branding.* so
// the plugin DLL is self-contained; no on-disk asset lookup that could
// silently miss after a partial deploy.
internal static class HellionForgeAscii
{
private static string? _foxBanner;
private static string? _foxMini;
public static string FoxBanner => _foxBanner ??= Load("HellionChat.Branding.fox-banner.txt");
public static string FoxMini => _foxMini ??= Load("HellionChat.Branding.fox-mini.txt");
private static string Load(string resourceName)
+32 -1
View File
@@ -1,4 +1,5 @@
using System.Collections;
using System.Linq;
using Dalamud;
using Dalamud.Bindings.ImGui;
using Dalamud.Configuration;
@@ -34,7 +35,7 @@ public class ConfigKeyBind
[Serializable]
public class Configuration : IPluginConfiguration
{
private const int LatestVersion = 17;
private const int LatestVersion = 19;
public int Version { get; set; } = LatestVersion;
@@ -44,6 +45,10 @@ public class Configuration : IPluginConfiguration
// Global window opacity, applied across all themes.
public float WindowOpacity = 0.85f;
// UI-12: background opacity of the main chat window while unfocused.
// WindowOpacity above stays the focused value.
public float WindowOpacityInactive = 0.65f;
// Reserved for future UI toggles; pre-declared to avoid a migration later.
public bool ReduceMotion;
@@ -133,6 +138,10 @@ public class Configuration : IPluginConfiguration
public bool SeenPopOutHeaderHint;
public bool AutoTellTabsOpenAsPopout;
// UI-7: how sender names are rendered in the chat log.
public WorldSuffixMode WorldSuffixMode = WorldSuffixMode.OtherWorldOnly;
public NameFormMode NameFormMode = NameFormMode.Full;
public int GetRetentionDays(ChatType type)
{
if (RetentionPerChannelDays.TryGetValue(type, out var userOverride))
@@ -187,6 +196,15 @@ public class Configuration : IPluginConfiguration
public bool CollapseKeepUniqueLinks;
public bool SymbolPickerEnabled = true;
public bool PlaySounds = true;
// AUDIO-1: playback volume (0-1) for the three bundled custom sounds.
public float CustomSoundVolume = 0.5f;
// Toast when a tell the user sent could not be delivered.
public bool NotifyFailedTell = true;
// UI-11: warn before sending a message that carries plugin-only glyphs.
public bool NotifyPluginDisclosure = true;
public bool KeepInputFocus = true;
public int MaxLinesToRender = 2_500; // 1-10000
public bool Use24HourClock = true;
@@ -282,6 +300,9 @@ public class Configuration : IPluginConfiguration
CollapseKeepUniqueLinks = other.CollapseKeepUniqueLinks;
SymbolPickerEnabled = other.SymbolPickerEnabled;
PlaySounds = other.PlaySounds;
CustomSoundVolume = other.CustomSoundVolume;
NotifyFailedTell = other.NotifyFailedTell;
NotifyPluginDisclosure = other.NotifyPluginDisclosure;
KeepInputFocus = other.KeepInputFocus;
MaxLinesToRender = other.MaxLinesToRender;
Use24HourClock = other.Use24HourClock;
@@ -353,6 +374,7 @@ public class Configuration : IPluginConfiguration
// v1.1.0 theme engine fields
Theme = other.Theme;
WindowOpacity = other.WindowOpacity;
WindowOpacityInactive = other.WindowOpacityInactive;
ReduceMotion = other.ReduceMotion;
UseCompactDensity = other.UseCompactDensity;
@@ -367,6 +389,9 @@ public class Configuration : IPluginConfiguration
PopOutInputEnabled = other.PopOutInputEnabled;
SeenPopOutHeaderHint = other.SeenPopOutHeaderHint;
AutoTellTabsOpenAsPopout = other.AutoTellTabsOpenAsPopout;
WorldSuffixMode = other.WorldSuffixMode;
NameFormMode = other.NameFormMode;
}
}
@@ -443,6 +468,10 @@ public class Tab
public bool AllSenderMessages;
public TellTarget TellTarget = TellTarget.Empty();
// Per-tab notification sound for messages arriving in an inactive tab.
public bool EnableNotificationSound;
public uint NotificationSoundId = 1;
[NonSerialized]
public uint Unread;
@@ -561,6 +590,8 @@ public class Tab
IsPinned = IsPinned,
AllSenderMessages = AllSenderMessages,
TellTarget = TellTarget.Clone(),
EnableNotificationSound = EnableNotificationSound,
NotificationSoundId = NotificationSoundId,
IsGreeted = IsGreeted,
};
}
+18 -3
View File
@@ -1,7 +1,7 @@
<Project Sdk="Dalamud.NET.Sdk/15.0.0">
<PropertyGroup>
<!-- Independent versioning; see yaml changelog for upstream Chat 2 base -->
<Version>1.5.4</Version>
<Version>1.5.6</Version>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<!-- Use lock file to pin exact versions -->
@@ -26,6 +26,11 @@
<!-- SQLitePCLRaw override for CVE-2025-6965, CVE-2025-7709 (SQLite >= 3.50.3) -->
<PackageReference Include="SQLitePCLRaw.lib.e_sqlite3" Version="3.50.3" />
<PackageReference Include="morelinq" Version="4.4.0" />
<!-- NAudio.WinMM 2.2.1 MIT - WaveOutEvent/WinMM path is Wine-safe (WaveOut works under Wine,
Media-Foundation-based codecs do not). Using the sub-package avoids pulling in
NAudio.WinForms (which requires WindowsDesktop and does not build on Linux hosts).
WaveOutEvent and WaveFileReader both live in NAudio.WinMM + NAudio.Core. -->
<PackageReference Include="NAudio.WinMM" Version="2.2.1" />
<PackageReference Include="Pidgin" Version="[3.5.1, 4.0.0)" />
<PackageReference Include="SixLabors.ImageSharp" Version="[3.1.12, 4.0.0)" />
</ItemGroup>
@@ -58,8 +63,18 @@
<EmbeddedResource Include="Resources\Inter-OFL.txt">
<LogicalName>Inter-OFL.txt</LogicalName>
</EmbeddedResource>
<EmbeddedResource Include="Resources\Branding\fox-banner.txt">
<LogicalName>HellionChat.Branding.fox-banner.txt</LogicalName>
<EmbeddedResource Include="Resources\Branding\fox-banner.png">
<LogicalName>HellionChat.Branding.fox-banner.png</LogicalName>
</EmbeddedResource>
<!-- Bundled custom notification sounds, Mono 44.1 kHz 16-bit PCM WAV (Wine-safe) -->
<EmbeddedResource Include="Resources\Sounds\notification-1.wav">
<LogicalName>HellionChat.Sounds.notification-1.wav</LogicalName>
</EmbeddedResource>
<EmbeddedResource Include="Resources\Sounds\notification-2.wav">
<LogicalName>HellionChat.Sounds.notification-2.wav</LogicalName>
</EmbeddedResource>
<EmbeddedResource Include="Resources\Sounds\notification-3.wav">
<LogicalName>HellionChat.Sounds.notification-3.wav</LogicalName>
</EmbeddedResource>
<EmbeddedResource Include="Resources\Branding\fox-mini.txt">
<LogicalName>HellionChat.Branding.fox-mini.txt</LogicalName>
+45 -100
View File
@@ -35,6 +35,51 @@ tags:
- Replacement
- Privacy
changelog: |-
**v1.5.6 — Settings Overhaul + Filter & Notification Polish (2026-05-23)**
- Settings window reorganised: ten tabs down to seven (General, Appearance, Chat, Window, Channels, Data & Privacy, About). Each tab now uses collapsible sections grouped by control type. Sections start collapsed every time you open a tab — less noise, easier to find what you need.
- New sender-name display options under Chat → Messages: separate world-suffix and name-format modes (Full name / First name only / Initials × Never / Other worlds only / Always).
- Plugin-only symbols now show a pre-send warning so other players do not get empty boxes (Chat → Messages → "Warn before sending plugin-only symbols").
- Separate window opacity for focused vs. inactive chat window (Appearance → Window style → "Inactive window opacity"). The slider above sets the focused value.
- Custom notification sound volume slider (General → Sound, and mirrored in Channels → per-tab → Notification). Affects only the three bundled custom sounds; the 16 game sounds are unaffected.
- The per-tab regex filter that briefly shipped earlier in this cycle has been removed — FFXIV's built-in blackword filter covers the same need.
- All 24 locale files updated for the new section labels and the v1.5.6 control labels (machine translation; native review continues via the Hellion Forge Discord).
Based on Chat 2 1.35.3 (upstream Infiziert90/ChatTwo, EUPL-1.2).
---
**v1.5.5 — Upstream-Sync Tab-Features (2026-05-21)**
A backlog-sync cycle: inherited tab-feature items plus a new fox
banner image and custom notification sounds.
User-visible:
- Failed tells now raise a warning toast when a message you sent
could not be delivered (recipient offline, in an instance, or
blocking you). Toggle in Settings, Chat tab.
- Per-tab notification sound: each tab can play a sound when a
message arrives while you are looking at a different tab. Pick
one of the 16 game chat sounds or one of three bundled Hellion
sounds, with a preview button to hear it. Off by default,
respects the global sound toggle.
- The tab rename field in the right-click menu now focuses
itself when the menu opens and accepts up to 512 characters,
matching the settings-tab rename.
- A jump-to-latest button appears in the chat log header while
you are scrolled up from the live end.
- Map flags and item links can be inserted into the chat input
from its right-click menu.
- The Hellion Forge fox banner in the first-run wizard and the
Information tab is now a real image instead of ASCII art.
Schema bumped to v18 (additive fields only, no data migration).
Based on Chat 2 1.35.3 (upstream Infiziert90/ChatTwo, EUPL-1.2).
---
**v1.5.4 — Polish and Motion (2026-05-20)**
A polish cycle: smoother theme switching, faster theme and tab
@@ -132,104 +177,4 @@ changelog: |-
---
**v1.5.2 — First-Run Wizard Rework (2026-05-18)**
UX patch. The first-run wizard becomes a four-step flow with a
new Roleplay privacy profile and a power-settings step that
surfaces previously-hidden defaults. Existing v1.5.1 users see
the new wizard once on first v1.5.2 boot.
What changes user-visible:
- Wizard navigation: Welcome → Privacy profile → Power settings
→ Done. Forge-Bronze pagination dots, dedicated stage for the
power settings so they are no longer buried in Settings.
- Fourth privacy profile "Roleplay": Privacy-First plus Say and
both emote types, with a 30-day window for Say and a 90-day
window for emotes. Shout, Yell and Novice Network stay out.
- Privacy picker becomes a 2x2 grid. Casual stays the
recommended option with a ★ marker.
- Power-settings step covers Load Previous Session, Filter
Include Previous Sessions, Auto-Tell-Tabs History Preload,
Compact Density, Prettier Timestamps and a built-in theme
picker. All six map to existing Configuration fields — no new
settings introduced.
- Staged commit: the wizard only writes to Config on the Finish
step. Decide-later or X-close at any point leaves the existing
config untouched.
- Inline test hint on the done step: "type /tell <Player Name>
into chat" surfaces the auto-tell-tab spawn mechanism.
- Window starts at 720x480 (was 900x560) and can shrink to
600x400; Step 1 keeps the fox banner in a folded TreeNode so
the onboarding copy stays primary.
- Existing users get the new wizard surfaced once on first boot
after the update via the new WizardLastShownVersion config
field. Future cycles bump the constant only when the wizard
itself changes shape.
Under the hood:
- WizardStateSmokeStep added to /xlperf alongside the FontManager
and ThemeSwitch self-tests.
- Twelve new pure-helper xUnit Facts in the Build Suite cover
all four privacy profile sets and their retention overrides.
Migration v17 stays (no schema bump). The Configuration grows
one optional string field (WizardLastShownVersion) which
defaults to empty for legacy users.
Based on Chat 2 1.35.3 (upstream Infiziert90/ChatTwo, EUPL-1.2).
---
**v1.5.1 — FontAtlas Refactor and Hellion Forge Signature (2026-05-17)**
Hybrid FontManager refactor plus an embedded provenance mark.
What changes under the hood:
- FontManager handle creation moves into the ctor inside a single
atlas.SuppressAutoRebuild() block. The font atlas now builds once
per plugin load instead of four to five times — less CPU and GPU
pressure in the first seconds after a reload, less atlas texture
memory churn.
- Hybrid property model: Axis, AxisItalic and FontAwesome become
init-only handles. RegularFont and ItalicFont stay mutable because
the eight font settings still need to replace them at runtime —
that path is funnelled through RebuildDelegateFonts() now and
runs without a plugin reload.
- FontAwesome reuses Dalamud's UiBuilder.IconFontFixedWidthHandle
instead of building its own atlas slot. One delegate-build step
less in the ctor.
- BuildFontsAsync and BuildFonts are removed; the live mutation
path is RebuildDelegateFonts() now.
- Two FontManager self-test steps registered with /xlperf: ctor
smoke (every handle non-null after Phase-1 resolve, no atlas
load-exception) and push smoke (Push() returns without throwing).
Honorific full-gradient port (originally the v1.5.1 main item) was
dropped: Honorific 3.2 exposes no IPC for the rendered gradient
frame, and an in-plugin port of the colour palette was declined.
The integration stays at the v1.4.7 glow-only shape.
User-visible:
- Hellion Forge signature: a small fox-head ASCII silhouette is
emitted to /xllog on every plugin load, and a full fox banner
with "Hellion Forge" set inside the body is available as a
folded TreeNode in the First-Run Wizard and Settings ->
Information tab. Drawn by Julia Moon, embedded in the plugin DLL.
- No settings changes, no migration. v17 stays.
Note on performance: the cross-plugin baseline target from v1.5.0
(matching Lightless and XIVInstantMessenger at ~7 ms HITCH) did
not land this cycle. HITCH stays around 80 ms because the cost is
in the UiBuilder first-frame render path, not in the atlas build
(which this cycle did reduce from 4-5 builds per load to 1). A
first-frame render investigation is reserved for a later cycle.
Based on Chat 2 1.35.3 (upstream Infiziert90/ChatTwo, EUPL-1.2).
---
Full history: https://gitea.hellion-forge.cloud/JonKazama-Hellion/HellionChat/releases
@@ -1,4 +1,5 @@
using Dalamud.Plugin;
using HellionChat.Integrations;
using HellionChat.Ipc;
using HellionChat.Themes;
using Microsoft.Extensions.Hosting;
@@ -85,3 +86,18 @@ internal sealed class AutoTellTabsServiceInitHostedService(AutoTellTabsService s
public Task StopAsync(CancellationToken cancellationToken) => Task.CompletedTask;
}
// Eager-resolve trigger: resolving FailedTellNotifier in this adapter's ctor
// enables its game hook during host startup. StartAsync itself is a no-op.
internal sealed class FailedTellNotifierInitHostedService(FailedTellNotifier notifier)
: IHostedService
{
// No-op adapter: the ctor dependency above is the actual eager-resolve
// trigger. Field kept to match the IpcManager/TypingIpc/ExtraChat no-op
// adapters and to avoid the CS9113 unread-parameter warning.
private readonly FailedTellNotifier _notifier = notifier;
public Task StartAsync(CancellationToken cancellationToken) => Task.CompletedTask;
public Task StopAsync(CancellationToken cancellationToken) => Task.CompletedTask;
}
@@ -0,0 +1,150 @@
using System;
using System.IO;
using Microsoft.Extensions.Logging;
using NAudio.Wave;
namespace HellionChat.Integrations;
// Plays the three bundled WAV notification sounds via NAudio WaveOutEvent.
// WaveOutEvent/WinMM is the correct backend for FFXIV on Wine: it works
// without Media Foundation (which Wine does not support for MP3/AAC).
//
// Playback volume comes from Configuration.CustomSoundVolume via the Play
// parameter, clamped to [0,1]. The 16 game sounds are unaffected — they go
// through UIGlobals.PlaySoundEffect, which the plugin cannot scale.
internal sealed class CustomAudioPlayer : IDisposable
{
// Sound bytes are read once at construction so each Play() wraps a fresh
// MemoryStream rather than re-reading the manifest stream (which becomes
// unreadable after the first read and would require Seek support).
private readonly byte[][] _soundData;
private readonly ILogger<CustomAudioPlayer> _logger;
private WaveOutEvent? _outputDevice;
private WaveFileReader? _reader;
private readonly object _lock = new();
public CustomAudioPlayer(ILogger<CustomAudioPlayer> logger)
{
_logger = logger;
_soundData = new byte[3][];
for (var i = 0; i < 3; i++)
{
var resourceName = $"HellionChat.Sounds.notification-{i + 1}.wav";
using var stream = typeof(CustomAudioPlayer).Assembly.GetManifestResourceStream(
resourceName
);
if (stream is null)
{
_logger.LogWarning(
"Embedded sound resource not found: {Resource}. "
+ "Custom sound {Index} will be silent.",
resourceName,
i + 1
);
_soundData[i] = Array.Empty<byte>();
continue;
}
using var ms = new MemoryStream();
stream.CopyTo(ms);
_soundData[i] = ms.ToArray();
}
}
// customIndex is 1, 2, or 3, matching the sound file suffix.
// Stops any currently playing sound before starting the new one.
// NAudio playback runs on its own thread; this method returns immediately.
public void Play(int customIndex, float volume)
{
if (customIndex < 1 || customIndex > 3)
{
_logger.LogWarning(
"CustomAudioPlayer.Play called with out-of-range index {Index}",
customIndex
);
return;
}
var data = _soundData[customIndex - 1];
if (data.Length == 0)
{
_logger.LogWarning(
"Sound data for index {Index} is empty; skipping playback",
customIndex
);
return;
}
lock (_lock)
{
try
{
StopCurrent();
var ms = new MemoryStream(data, writable: false);
_reader = new WaveFileReader(ms);
_outputDevice = new WaveOutEvent();
// Init opens the device and creates the WinMM handle. Volume
// must be set after Init, otherwise waveOutSetVolume fails with
// InvalidHandle.
_outputDevice.Init(_reader);
// AUDIO-1: volume comes from Configuration.CustomSoundVolume.
// Clamp here too — a hand-edited config could carry an
// out-of-range value, and WaveOutEvent.Volume rejects those.
_outputDevice.Volume = Math.Clamp(volume, 0f, 1f);
_outputDevice.Play();
}
catch (Exception ex)
{
_logger.LogWarning(
ex,
"Failed to play custom notification sound {Index}",
customIndex
);
StopCurrent();
}
}
}
// Stops and tears down the active WaveOutEvent + WaveFileReader without
// throwing. Called on Play (to interrupt previous sound) and from Dispose.
// Guards Stop() with a PlaybackState check because waveOutReset blocks even
// when playback already finished; under Wine this can stall the WinMM
// callback thread if many sounds arrive in quick succession.
private void StopCurrent()
{
try
{
if (_outputDevice?.PlaybackState == PlaybackState.Playing)
_outputDevice.Stop();
_outputDevice?.Dispose();
_outputDevice = null;
}
catch (Exception ex)
{
_logger.LogWarning(ex, "Exception while stopping current WaveOutEvent");
}
try
{
_reader?.Dispose();
_reader = null;
}
catch (Exception ex)
{
_logger.LogWarning(ex, "Exception while disposing WaveFileReader");
}
}
// At plugin unload the PendingMessageThread is already cancelled and the
// draw loop is gone, so _lock is uncontended here. Calling StopCurrent
// outside the lock avoids holding it across the blocking waveOutReset /
// WaveOutEvent.Dispose, which can freeze on Wine during unload.
public void Dispose()
{
StopCurrent();
}
}
@@ -0,0 +1,74 @@
using System;
using Dalamud.Hooking;
using Dalamud.Interface.ImGuiNotification;
using FFXIVClientStructs.FFXIV.Client.System.String;
using FFXIVClientStructs.FFXIV.Client.UI.Misc;
using HellionChat._Helpers;
using HellionChat.Resources;
using HellionChat.Util;
using Microsoft.Extensions.Logging;
namespace HellionChat.Integrations;
// A minimal, failed-tell-specific game hook. A locale-robust "tell failed"
// signal is not reachable over the processed message stream (Message carries
// no LogMessage row id, ChatCode 60 is too broad). This hooks the one
// ShowLogMessageString overload and toasts on a pinned id set. It is NOT the
// broad ad-block hook layer.
internal sealed class FailedTellNotifier : IDisposable
{
private readonly ILogger<FailedTellNotifier> _logger;
private readonly Hook<RaptureLogModule.Delegates.ShowLogMessageString>? _hook;
public unsafe FailedTellNotifier(ILogger<FailedTellNotifier> logger)
{
_logger = logger;
// Creating/enabling a hook is safe off the framework thread (the
// ctor runs during host startup on the framework thread,
// eager-resolved via FailedTellNotifierInitHostedService).
_hook =
Plugin.GameInteropProvider.HookFromAddress<RaptureLogModule.Delegates.ShowLogMessageString>(
RaptureLogModule.MemberFunctionPointers.ShowLogMessageString,
ShowLogMessageStringDetour
);
_hook.Enable();
}
private unsafe void ShowLogMessageStringDetour(
RaptureLogModule* module,
uint logMessageId,
Utf8String* value
)
{
try
{
if (
FailedTellMatcher.ShouldNotify(
logMessageId,
Plugin.Config.NotifyFailedTell,
FailedTellMatcher.FailedTellLogMessageIds
)
)
{
var recipient = value is null ? string.Empty : value->ToString();
var content = string.IsNullOrEmpty(recipient)
? HellionStrings.FailedTell_Notification_Generic
: string.Format(HellionStrings.FailedTell_Notification_Named, recipient);
WrapperUtil.AddNotification(content, NotificationType.Warning);
}
}
catch (Exception ex)
{
_logger.LogError(ex, "FailedTellNotifier detour threw");
}
_hook!.Original(module, logMessageId, value);
}
public void Dispose()
{
_hook?.Disable();
_hook?.Dispose();
}
}
+45
View File
@@ -7,7 +7,9 @@ using Dalamud.Game.Text.SeStringHandling;
using Dalamud.Hooking;
using Dalamud.Interface.ImGuiNotification;
using Dalamud.Plugin.Services;
using FFXIVClientStructs.FFXIV.Client.UI;
using FFXIVClientStructs.FFXIV.Client.UI.Misc;
using HellionChat._Helpers;
using HellionChat.Code;
using HellionChat.Resources;
using HellionChat.Util;
@@ -330,6 +332,7 @@ internal class MessageManager : IAsyncDisposable
Store.UpsertMessage(message);
var currentMatches = Plugin.CurrentTab.Matches(message);
uint? notificationSound = null;
foreach (var tab in Plugin.Config.Tabs)
{
var unread = !(
@@ -337,7 +340,49 @@ internal class MessageManager : IAsyncDisposable
);
if (tab.Matches(message))
{
tab.AddMessage(message, unread);
// Per-tab notification sound. Fire once for the first inactive
// tab that wants it, keeping a message matching several
// background tabs from stacking sounds.
// TEST-MIRROR: ../_Helpers/TabSoundDecision.cs
if (
notificationSound is null
&& TabSoundDecision.ShouldPlay(
Plugin.CurrentTab == tab,
tab.EnableNotificationSound,
Plugin.Config.PlaySounds
)
)
{
notificationSound = tab.NotificationSoundId;
}
}
}
if (notificationSound is { } soundId)
{
if (soundId is >= 1 and <= 16)
{
// ProcessMessage runs on the PendingMessageThread worker; the native
// UIGlobals.PlaySoundEffect must be marshalled onto the framework
// thread (reference_dalamud_framework_thread).
Plugin.Framework.RunOnFrameworkThread(() =>
{
unsafe
{
UIGlobals.PlaySoundEffect(soundId);
}
});
}
else if (soundId >= 17)
{
// Custom bundled sounds (ids 17-19) go through NAudio WaveOutEvent.
// NAudio manages its own playback thread, so no framework marshalling needed.
Plugin.CustomAudioPlayer.Play((int)soundId - 16, Plugin.Config.CustomSoundVolume);
}
// soundId == 0 (hand-edited config) falls through: plays nothing.
}
MessageProcessed?.Invoke(message);
+42
View File
@@ -0,0 +1,42 @@
using HellionChat.Resources;
namespace HellionChat;
// UI-7: how a sender's name is rendered in the chat log. Kept in its own file
// (no Dalamud usings) so the SenderNameFormatter pure-helper test stays
// AppDomain-isolated (feedback_dalamud_test_isolation).
public enum WorldSuffixMode
{
Never,
OtherWorldOnly,
Always,
}
public enum NameFormMode
{
Full,
FirstNameOnly,
Initials,
}
public static class NameDisplayModeExt
{
public static string Name(this WorldSuffixMode mode) =>
mode switch
{
WorldSuffixMode.Never => HellionStrings.NameDisplay_WorldSuffix_Never,
WorldSuffixMode.OtherWorldOnly => HellionStrings.NameDisplay_WorldSuffix_OtherWorldOnly,
WorldSuffixMode.Always => HellionStrings.NameDisplay_WorldSuffix_Always,
_ => mode.ToString(),
};
public static string Name(this NameFormMode mode) =>
mode switch
{
NameFormMode.Full => HellionStrings.NameDisplay_NameForm_Full,
NameFormMode.FirstNameOnly => HellionStrings.NameDisplay_NameForm_FirstNameOnly,
NameFormMode.Initials => HellionStrings.NameDisplay_NameForm_Initials,
_ => mode.ToString(),
};
}
+11 -6
View File
@@ -115,6 +115,7 @@ public sealed class Plugin : IAsyncDalamudPlugin
internal Themes.ThemeRegistry ThemeRegistry { get; private set; } = null!;
internal Ui.StatusBar StatusBar { get; private set; } = null!;
internal Integrations.HonorificService HonorificService { get; private set; } = null!;
internal Integrations.CustomAudioPlayer CustomAudioPlayer { get; private set; } = null!;
// Platform indirection over Dalamud.Utility.Util. Wired in Phase-1 ctor so
// any service allocated in LoadAsync can read Plugin.PlatformUtil.
@@ -198,10 +199,12 @@ public sealed class Plugin : IAsyncDalamudPlugin
// point (MigrateFromChatTwoLayout, LanguageChanged, ImGuiUtil.Initialize)
// do not touch either static, so the brief null-window is safe.
// Schema gate: v1.4.x requires config v16+. Users on older schemas
// must install v1.4.2 first to run the migration chain. v17 adds
// Tab.IsPinned (additive, no data migration needed) so v16 configs
// load cleanly and get their Version stamp bumped after the gate.
// Schema gate: v1.4.x+ requires config v16+. Users on older schemas
// must install v1.4.2 first to run the migration chain. v19 adds the
// top-level CustomSoundVolume, WindowOpacityInactive, WorldSuffixMode
// and NameFormMode fields — all additive with defaults, so v16-v18
// configs load cleanly and get their Version stamp bumped after the
// gate.
if (Config.Version < 16)
{
throw new InvalidOperationException(
@@ -209,7 +212,7 @@ public sealed class Plugin : IAsyncDalamudPlugin
+ "Please install v1.4.2 first to migrate the configuration, then upgrade to v1.4.10."
);
}
Config.Version = 17;
Config.Version = 19;
// Unpinned TempTabs are session-only and dropped on every load. Pinned
// TempTabs survive reload — Jin's tester feedback (v1.4.7).
@@ -284,6 +287,7 @@ public sealed class Plugin : IAsyncDalamudPlugin
TypingIpc = _host.Services.GetRequiredService<TypingIpc>();
ExtraChat = _host.Services.GetRequiredService<ExtraChat>();
HonorificService = _host.Services.GetRequiredService<Integrations.HonorificService>();
CustomAudioPlayer = _host.Services.GetRequiredService<Integrations.CustomAudioPlayer>();
StatusBar = _host.Services.GetRequiredService<Ui.StatusBar>();
MessageManager = _host.Services.GetRequiredService<MessageManager>();
AutoTellTabsService = _host.Services.GetRequiredService<AutoTellTabsService>();
@@ -335,6 +339,7 @@ public sealed class Plugin : IAsyncDalamudPlugin
new SelfTests.FontPushSmokeStep(this),
new SelfTests.WizardStateSmokeStep(this),
new SelfTests.QuickPickerSelfTestStep(this),
new SelfTests.FoxBannerTextureSmokeStep(this),
]);
// Re-surface the wizard for existing users when a major UX
@@ -950,7 +955,7 @@ public sealed class Plugin : IAsyncDalamudPlugin
// this same draw thread, so it cannot be null here.
// v1.5.3 fix: also push RegularFont when the bundled Inter Light is
// selected. Without this, UseHellionFont=true silently fell back to
// the FFXIV Axis font because FontsAndColours forces FontsEnabled
// the FFXIV Axis font because the Appearance tab forces FontsEnabled
// off in that branch, and the bundled font never made it into draw.
var useRegularFont = Config.FontsEnabled || Config.UseHellionFont;
using ((useRegularFont ? FontManager.RegularFont! : FontManager.Axis).Push())
+11
View File
@@ -107,6 +107,12 @@ internal static class PluginHostFactory
sp.GetRequiredService<ILogger<Integrations.HonorificService>>(),
sp.GetRequiredService<IFramework>()
));
services.AddSingleton(sp => new Integrations.FailedTellNotifier(
sp.GetRequiredService<ILogger<Integrations.FailedTellNotifier>>()
));
services.AddSingleton(sp => new Integrations.CustomAudioPlayer(
sp.GetRequiredService<ILogger<Integrations.CustomAudioPlayer>>()
));
services.AddSingleton(sp => new MessageManager(
sp.GetRequiredService<Plugin>(),
@@ -172,6 +178,11 @@ internal static class PluginHostFactory
services.AddHostedService(sp => new AutoTellTabsServiceInitHostedService(
sp.GetRequiredService<AutoTellTabsService>()
));
services.AddHostedService(
sp => new Infrastructure.Hosting.FailedTellNotifierInitHostedService(
sp.GetRequiredService<Integrations.FailedTellNotifier>()
)
);
}
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 419 KiB

@@ -1,68 +0,0 @@
.:;+xXXX$$$$$$$$XXx+;:
.X$+ .;+X$$$$$$$$$$$$$$$$$$$$$$$$$$$x:
;$xx$$X+:... .....::+X$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$;.
X$; .:+xXXX$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$X:
$$; :++xX$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$X;
$$x. .+$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$X.
x$$; ;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$X+;::::::;x$$$$$:
:$$$; .+$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$X+:. .+$$$$$$$$$X+;;:
;$$$+. :X$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$X;: :$$$$$$$$$$$$$$$$X;.
.+$$$X: ..;X$$$$$$$$$$$$$$$$$$$$$$$$$$X;.. :$$$$$$$$$$$$$$$$$$$$X:
;$$$$$X+::::+X$$$$$$$$$$$$$$$$$$$$$X;. .$$$$$$$$$$$$$$$$$$$$$$$X;
+$$$$$$$$$$$$$$$$$$$$$$$$$$$$X+: Hellion Forge x$$$$$$$$$$$$$$$$$$$$$$$$$X:
.;x$$$$$$$$$$$$$$$$$$$$$x;: .X$$$$$$$$$$$$$$$$$$$$$$$$$$$+
.;+$$$$$$$$$$X+;:.. .X$$$$$$$$$$$$$$$$$$$$$$$$$$$$+
.X$$$$$$$$$$$$$$$$$$$$$$$$$$$$$;
.X$$$$$$$$$$$$$$$$$$$$$$$$$$$$$X
x$$$$$$$$$$$$$$$$$$$$$$$$$$$$$X
;$$$$$$xx$$$$$$$$$$$$$$$$$$$$$x
.$$$$$$x+$$$$$$$$$$$$$$$$$$$$$x
:+X$$$$$$X;$$$$$$$$$$$$$$$$$$$$$$:
;$$$$$$$$$$;$$$$$$$$$$$$$$$$$$$$$$X.
+$$$$$$$$$$;x$$$$$$$$$$$$$$$$$$$$$$+
x$$$$$$$$$$:$$$$$$$$$$$$$$$$$$$$$$X:
.X$$$$$$$$$.:$$$$$$$$$$$$$$$$$$$$$$;
:X$$X;;;;: .$$$$$$$$$$$$$$$$$$$$$$X.
.$$$$X .$$$$$$$$$$$$$$$$$$$$$$$:
.$$$$+ .X$$$$$$$$$$$$$$$$$$$$$$;
;$$$$: .X$$$$$$$$$$$$$$$$$$$$$$x
:X$$$+ .$$$$$$$$$$$$$$$$$$$$$$$X
+$$$x :$$$$$$$$$$$$$$$$$$$$$$$X
;$$X: $$$$$$$$$$$$$$$$$$$$$$$$X
x$$$$$$$$$$$$$$$$$$$$$$$$X
+$$$$$$$$$$$$$$$$$$$$$$$$$+
.+$$$$$$$$$$$$$$$$$$$$$$$$$$;
. ;$$$$$$$$$$$$$$$$$$$$$$$$$$$$:
:X$x$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
.XX$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$+
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$+$;
.. ++X$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$:+$:
:$$+. ;$$$$$$$$$$$$$$X$$$$$$$$$$$$$$$$$$$$$;:$$+
.x+X$X: X$$$$$$$$$$x::;:;$$$$$$$$$$$$$$$$$$X: ;$X.
:X.x$$$:.::::::;x+:X$$$$;$$$$$$$$$$$$$$$$$$: :X;
:x.x$$$$$$$$$$$$$$$$$;;$:$$$$$$$$$$$$$$$$$: :$+
:Xx$$$$$$$$$$$$$$$$$: ;X;$$$$$$$$$$$$$$$$: .+$$;
;$$$$$$$$$$$$$$$$$$; .X+X$$$$$$$$$$$$$$$+ .+$+.
+$$$$$$$$$$$$$$$$$$$$$$$;+$$$$$$$$$$$$$$X: .+X:
+$$$$$$$$$$$$$$$$$$$$$$$$$+:$$$$$$$$$$$$$+.+$+.
;$$$$$$$$$$$$$$$$$$$$$$$$$$$X;$$$$$$$$$$$$$$X:
+X: .:X$$$$$$$$x+++x$$$$$$$$;:X$$$$$$$$$$$X:
:x.;$;+$$$$$:. :X$$$$X :$$$$$$$$$$X:
;x :X$$$; .x$$x X$$; .:+.$$$$$$$$$$x
xx.X$$X: X$;.:$X:.X$$$$$$$$$:
+$$$$X. ;$;::: .$$$$$$$$$:
;$$$; :+X$$$$XX$; X$$$$$$$$:
;$$X: .:x$x$$$$$X. x$$$$$$$$:
:X$X: :+x; :$$$$$: +$$$$$$$X:
:++$X+xXX;. +$$$$. +$$$$$$$+.
... .X$$$X. +$$$$$$$:
;$$$$; .X$$$$$$x.
;$$X; :X$$$$$$;
;$$$$$$x.
.X$$$$$$;
;$$$$$$+
+$$$$$;
:X$$$$;.
;$$$$+.
.x$$$X:
.+$$X;
+95 -43
View File
@@ -41,11 +41,9 @@ internal class HellionStrings
private static string Get(string key)
=> ResourceManager.GetString(key, resourceCulture) ?? key;
internal static string Privacy_Tab_Title => Get(nameof(Privacy_Tab_Title));
internal static string Privacy_FilterEnabled_Name => Get(nameof(Privacy_FilterEnabled_Name));
internal static string Privacy_FilterEnabled_Description => Get(nameof(Privacy_FilterEnabled_Description));
internal static string Privacy_FilterEnabled_StorageOnly_Help => Get(nameof(Privacy_FilterEnabled_StorageOnly_Help));
internal static string Privacy_Filter_Tree_Heading => Get(nameof(Privacy_Filter_Tree_Heading));
internal static string Privacy_Whitelist_Help => Get(nameof(Privacy_Whitelist_Help));
internal static string Privacy_Preset_PrivacyFirst => Get(nameof(Privacy_Preset_PrivacyFirst));
internal static string Privacy_Preset_ClearAll => Get(nameof(Privacy_Preset_ClearAll));
@@ -260,8 +258,6 @@ internal class HellionStrings
internal static string Settings_Card_Chat_Subtext => Get(nameof(Settings_Card_Chat_Subtext));
internal static string Settings_Card_Tabs_Title => Get(nameof(Settings_Card_Tabs_Title));
internal static string Settings_Card_Tabs_Subtext => Get(nameof(Settings_Card_Tabs_Subtext));
internal static string Settings_Card_Privacy_Title => Get(nameof(Settings_Card_Privacy_Title));
internal static string Settings_Card_Privacy_Subtext => Get(nameof(Settings_Card_Privacy_Subtext));
internal static string Settings_Card_Database_Title => Get(nameof(Settings_Card_Database_Title));
internal static string Settings_Card_Database_Subtext => Get(nameof(Settings_Card_Database_Subtext));
internal static string Settings_Card_Information_Title => Get(nameof(Settings_Card_Information_Title));
@@ -278,11 +274,6 @@ internal class HellionStrings
internal static string Settings_Themes_ApplyChatColors_Apply => Get(nameof(Settings_Themes_ApplyChatColors_Apply));
internal static string Settings_Themes_ApplyChatColors_Keep => Get(nameof(Settings_Themes_ApplyChatColors_Keep));
// Hellion Chat — General-Tab section headings
internal static string Settings_General_Input_Heading => Get(nameof(Settings_General_Input_Heading));
internal static string Settings_General_Audio_Heading => Get(nameof(Settings_General_Audio_Heading));
internal static string Settings_General_Performance_Heading => Get(nameof(Settings_General_Performance_Heading));
internal static string Settings_General_Language_Heading => Get(nameof(Settings_General_Language_Heading));
internal static string Settings_Language_FFXIVCoverage_Warning => Get(nameof(Settings_Language_FFXIVCoverage_Warning));
// Hellion Chat — Appearance-Tab section headings
@@ -291,17 +282,8 @@ internal class HellionStrings
internal static string Settings_Appearance_Colours_Heading => Get(nameof(Settings_Appearance_Colours_Heading));
internal static string Settings_Appearance_Timestamps_Heading => Get(nameof(Settings_Appearance_Timestamps_Heading));
// Hellion Chat — Window-Tab section headings
internal static string Settings_Window_Hide_Heading => Get(nameof(Settings_Window_Hide_Heading));
internal static string Settings_Window_InactivityHide_Heading => Get(nameof(Settings_Window_InactivityHide_Heading));
// Hellion Chat — Window-Tab section headings (pre-cycle legacy, kept for reference)
internal static string Settings_Window_Frame_Heading => Get(nameof(Settings_Window_Frame_Heading));
internal static string Settings_Window_Tooltips_Heading => Get(nameof(Settings_Window_Tooltips_Heading));
// Hellion Chat — Chat-Tab section headings
internal static string Settings_Chat_AutoTellTabs_Heading => Get(nameof(Settings_Chat_AutoTellTabs_Heading));
internal static string Settings_Chat_Behaviour_Heading => Get(nameof(Settings_Chat_Behaviour_Heading));
internal static string Settings_Chat_Preview_Heading => Get(nameof(Settings_Chat_Preview_Heading));
internal static string Settings_Chat_Emotes_Heading => Get(nameof(Settings_Chat_Emotes_Heading));
// Hellion Chat — Chat-Tab SymbolPicker
internal static string Settings_Chat_SymbolPicker_Enable_Name => Get(nameof(Settings_Chat_SymbolPicker_Enable_Name));
@@ -312,11 +294,6 @@ internal class HellionStrings
internal static string Settings_Database_Viewer_Heading => Get(nameof(Settings_Database_Viewer_Heading));
internal static string Settings_Database_Stats_Heading => Get(nameof(Settings_Database_Stats_Heading));
// Hellion Chat — Information-Tab section headings
internal static string Settings_Information_VersionInfo_Heading => Get(nameof(Settings_Information_VersionInfo_Heading));
internal static string Settings_Information_About_Heading => Get(nameof(Settings_Information_About_Heading));
internal static string Settings_Information_Changelog_Heading => Get(nameof(Settings_Information_Changelog_Heading));
// Hellion Chat — Default tab presets (channel-themed)
internal static string Tabs_Presets_System => Get(nameof(Tabs_Presets_System));
internal static string Tabs_Presets_FreeCompany => Get(nameof(Tabs_Presets_FreeCompany));
@@ -374,14 +351,8 @@ internal class HellionStrings
internal static string Appearance_UseCompactDensity_Description => Get(nameof(Appearance_UseCompactDensity_Description));
// Hellion Chat — v1.2.1 Settings Cleanup: new card titles + subtexts
internal static string Settings_Card_ThemeAndLayout_Title => Get(nameof(Settings_Card_ThemeAndLayout_Title));
internal static string Settings_Card_ThemeAndLayout_Subtext => Get(nameof(Settings_Card_ThemeAndLayout_Subtext));
internal static string Settings_Card_FontsAndColours_Title => Get(nameof(Settings_Card_FontsAndColours_Title));
internal static string Settings_Card_FontsAndColours_Subtext => Get(nameof(Settings_Card_FontsAndColours_Subtext));
internal static string Settings_Card_DataManagement_Title => Get(nameof(Settings_Card_DataManagement_Title));
internal static string Settings_Card_DataManagement_Subtext => Get(nameof(Settings_Card_DataManagement_Subtext));
internal static string Settings_Card_Integrations_Title => Get(nameof(Settings_Card_Integrations_Title));
internal static string Settings_Card_Integrations_Subtext => Get(nameof(Settings_Card_Integrations_Subtext));
// Hellion Chat — v1.2.1 Theme & Layout tab section headings + WindowOpacity slider
internal static string Settings_ThemeAndLayout_Theme_Heading => Get(nameof(Settings_ThemeAndLayout_Theme_Heading));
@@ -390,26 +361,21 @@ internal class HellionStrings
internal static string Settings_ThemeAndLayout_WindowOpacity_Name => Get(nameof(Settings_ThemeAndLayout_WindowOpacity_Name));
internal static string Settings_ThemeAndLayout_WindowOpacity_Description => Get(nameof(Settings_ThemeAndLayout_WindowOpacity_Description));
// Hellion Chat — v1.2.1 Fonts & Colours tab section headings
internal static string Settings_FontsAndColours_Fonts_Heading => Get(nameof(Settings_FontsAndColours_Fonts_Heading));
internal static string Settings_FontsAndColours_Colours_Heading => Get(nameof(Settings_FontsAndColours_Colours_Heading));
// Hellion Chat — v1.2.1 Data Management tab section headings
internal static string Settings_DataManagement_Storage_Heading => Get(nameof(Settings_DataManagement_Storage_Heading));
internal static string Settings_DataManagement_Retention_Heading => Get(nameof(Settings_DataManagement_Retention_Heading));
internal static string Settings_DataManagement_Cleanup_Heading => Get(nameof(Settings_DataManagement_Cleanup_Heading));
internal static string Settings_DataManagement_Export_Heading => Get(nameof(Settings_DataManagement_Export_Heading));
internal static string Settings_DataManagement_DbViewer_Heading => Get(nameof(Settings_DataManagement_DbViewer_Heading));
internal static string Settings_DataManagement_Advanced_Heading => Get(nameof(Settings_DataManagement_Advanced_Heading));
// Hellion Chat — v1.2.1 Window-tab Behaviour heading (replaces Frame heading)
internal static string Settings_Window_Frame_Behaviour_Heading => Get(nameof(Settings_Window_Frame_Behaviour_Heading));
// v1.5.6: Data & Privacy tab section titles (R6)
internal static string Settings_Section_PrivacyFilter => Get(nameof(Settings_Section_PrivacyFilter));
internal static string Settings_Section_Storage => Get(nameof(Settings_Section_Storage));
internal static string Settings_Section_Retention => Get(nameof(Settings_Section_Retention));
internal static string Settings_Section_Cleanup => Get(nameof(Settings_Section_Cleanup));
internal static string Settings_Section_Export => Get(nameof(Settings_Section_Export));
internal static string Settings_Section_Database => Get(nameof(Settings_Section_Database));
// Hellion Chat — v1.2.1 Migration v15 → v16 toast
internal static string Migration_v16_OverrideStyle_Toast => Get(nameof(Migration_v16_OverrideStyle_Toast));
// Hellion Chat — v1.3.0 Integrations tab (Honorific + Coming-Soon roadmap)
internal static string Settings_Tab_Integrations => Get(nameof(Settings_Tab_Integrations));
// Hellion Chat — v1.3.0 Integrations (Honorific + Coming-Soon roadmap) — now in About tab
internal static string Settings_Integrations_Intro => Get(nameof(Settings_Integrations_Intro));
internal static string Settings_Integrations_Honorific_SectionHeader => Get(nameof(Settings_Integrations_Honorific_SectionHeader));
internal static string Settings_Integrations_Honorific_Status_Detected => Get(nameof(Settings_Integrations_Honorific_Status_Detected));
@@ -451,4 +417,90 @@ internal class HellionStrings
internal static string Settings_QuickPicker_Tabs_Header => Get(nameof(Settings_QuickPicker_Tabs_Header));
internal static string Settings_ThemeAndLayout_ReduceMotion_Name => Get(nameof(Settings_ThemeAndLayout_ReduceMotion_Name));
internal static string Settings_ThemeAndLayout_ReduceMotion_Description => Get(nameof(Settings_ThemeAndLayout_ReduceMotion_Description));
// Failed-tell notification
internal static string FailedTell_Notification_Generic => Get(nameof(FailedTell_Notification_Generic));
internal static string FailedTell_Notification_Named => Get(nameof(FailedTell_Notification_Named));
internal static string Settings_Chat_NotifyFailedTell_Name => Get(nameof(Settings_Chat_NotifyFailedTell_Name));
internal static string Settings_Chat_NotifyFailedTell_Description => Get(nameof(Settings_Chat_NotifyFailedTell_Description));
// Per-tab notification sound
internal static string Tabs_NotificationSound_Enable_Name => Get(nameof(Tabs_NotificationSound_Enable_Name));
internal static string Tabs_NotificationSound_Description => Get(nameof(Tabs_NotificationSound_Description));
internal static string Tabs_NotificationSound_Option => Get(nameof(Tabs_NotificationSound_Option));
internal static string Tabs_NotificationSound_Preview => Get(nameof(Tabs_NotificationSound_Preview));
internal static string Tabs_NotificationSound_CustomOption => Get(nameof(Tabs_NotificationSound_CustomOption));
// Scroll-to-bottom and item/flag linking
internal static string ChatLog_ScrollToBottom_Tooltip => Get(nameof(ChatLog_ScrollToBottom_Tooltip));
internal static string ChatLog_Insert_MapFlag => Get(nameof(ChatLog_Insert_MapFlag));
internal static string ChatLog_Insert_ItemLink => Get(nameof(ChatLog_Insert_ItemLink));
// v1.5.6: plugin-disclosure warning
internal static string Settings_Chat_NotifyPluginDisclosure_Name => Get(nameof(Settings_Chat_NotifyPluginDisclosure_Name));
internal static string Settings_Chat_NotifyPluginDisclosure_Description => Get(nameof(Settings_Chat_NotifyPluginDisclosure_Description));
internal static string ChatInput_PluginDisclosure_Warning => Get(nameof(ChatInput_PluginDisclosure_Warning));
// v1.5.6: world suffix + name format display options
internal static string Settings_Chat_WorldSuffix_Name => Get(nameof(Settings_Chat_WorldSuffix_Name));
internal static string Settings_Chat_WorldSuffix_Description => Get(nameof(Settings_Chat_WorldSuffix_Description));
internal static string Settings_Chat_NameForm_Name => Get(nameof(Settings_Chat_NameForm_Name));
internal static string Settings_Chat_NameForm_Description => Get(nameof(Settings_Chat_NameForm_Description));
internal static string NameDisplay_WorldSuffix_Never => Get(nameof(NameDisplay_WorldSuffix_Never));
internal static string NameDisplay_WorldSuffix_OtherWorldOnly => Get(nameof(NameDisplay_WorldSuffix_OtherWorldOnly));
internal static string NameDisplay_WorldSuffix_Always => Get(nameof(NameDisplay_WorldSuffix_Always));
internal static string NameDisplay_NameForm_Full => Get(nameof(NameDisplay_NameForm_Full));
internal static string NameDisplay_NameForm_FirstNameOnly => Get(nameof(NameDisplay_NameForm_FirstNameOnly));
internal static string NameDisplay_NameForm_Initials => Get(nameof(NameDisplay_NameForm_Initials));
// v1.5.6: inactive window opacity
internal static string Settings_ThemeAndLayout_WindowOpacityInactive_Name => Get(nameof(Settings_ThemeAndLayout_WindowOpacityInactive_Name));
internal static string Settings_ThemeAndLayout_WindowOpacityInactive_Description => Get(nameof(Settings_ThemeAndLayout_WindowOpacityInactive_Description));
// v1.5.6: custom sound volume
internal static string Settings_General_CustomSoundVolume_Name => Get(nameof(Settings_General_CustomSoundVolume_Name));
internal static string Settings_General_CustomSoundVolume_Description => Get(nameof(Settings_General_CustomSoundVolume_Description));
// v1.5.6: General tab collapsible section titles (R6)
internal static string Settings_Section_Input => Get(nameof(Settings_Section_Input));
internal static string Settings_Section_Sound => Get(nameof(Settings_Section_Sound));
internal static string Settings_Section_Language => Get(nameof(Settings_Section_Language));
internal static string Settings_Section_Performance => Get(nameof(Settings_Section_Performance));
internal static string Settings_Section_Sound_TabsHint => Get(nameof(Settings_Section_Sound_TabsHint));
// v1.5.6: Chat tab collapsible section titles (R6)
internal static string Settings_Section_Messages => Get(nameof(Settings_Section_Messages));
internal static string Settings_Section_InputPreview => Get(nameof(Settings_Section_InputPreview));
internal static string Settings_Section_AutoTellTabs => Get(nameof(Settings_Section_AutoTellTabs));
internal static string Settings_Section_Emotes => Get(nameof(Settings_Section_Emotes));
internal static string Settings_Section_LinksTooltips => Get(nameof(Settings_Section_LinksTooltips));
internal static string Settings_Section_NoviceNetwork => Get(nameof(Settings_Section_NoviceNetwork));
// v1.5.6: Appearance tab collapsible section titles (R6)
internal static string Settings_Section_Theme => Get(nameof(Settings_Section_Theme));
internal static string Settings_Section_Fonts => Get(nameof(Settings_Section_Fonts));
internal static string Settings_Section_Colours => Get(nameof(Settings_Section_Colours));
internal static string Settings_Section_WindowStyle => Get(nameof(Settings_Section_WindowStyle));
internal static string Settings_Section_Timestamps => Get(nameof(Settings_Section_Timestamps));
internal static string Settings_Section_Animations => Get(nameof(Settings_Section_Animations));
// v1.5.6: Window tab collapsible section titles (R6)
internal static string Settings_Section_Hide => Get(nameof(Settings_Section_Hide));
internal static string Settings_Section_InactivityHide => Get(nameof(Settings_Section_InactivityHide));
internal static string Settings_Section_Frame => Get(nameof(Settings_Section_Frame));
// v1.5.6: Tabs tab per-tab-item sub-section titles (R6)
internal static string Settings_Section_Tab_Channels => Get(nameof(Settings_Section_Tab_Channels));
internal static string Settings_Section_Tab_Display => Get(nameof(Settings_Section_Tab_Display));
internal static string Settings_Section_Tab_Notification => Get(nameof(Settings_Section_Tab_Notification));
internal static string Settings_Section_Tab_Input => Get(nameof(Settings_Section_Tab_Input));
internal static string Settings_Section_Tab_PopOut => Get(nameof(Settings_Section_Tab_PopOut));
internal static string Settings_Section_Tab_Volume_AllTabsHint => Get(nameof(Settings_Section_Tab_Volume_AllTabsHint));
// v1.5.6: About tab collapsible section titles (R6)
internal static string Settings_Section_Extensions => Get(nameof(Settings_Section_Extensions));
internal static string Settings_Section_PluginInfo => Get(nameof(Settings_Section_PluginInfo));
internal static string Settings_Section_Project => Get(nameof(Settings_Section_Project));
internal static string Settings_Section_Translators => Get(nameof(Settings_Section_Translators));
internal static string Settings_Section_Changelog => Get(nameof(Settings_Section_Changelog));
}
+195 -103
View File
@@ -12,9 +12,6 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Privacy_Tab_Title" xml:space="preserve">
<value>Privadesa</value>
</data>
<data name="Privacy_FilterEnabled_Name" xml:space="preserve">
<value>Activa el filtre de privadesa</value>
</data>
@@ -24,9 +21,6 @@
<data name="Privacy_FilterEnabled_StorageOnly_Help" xml:space="preserve">
<value>El filtre només controla el que s'escriu a la base de dades local. Al registre del xat seguiràs veient cada missatge en directe; els canals exclosos simplement ja no es guarden. Si també vols treure canals de la visualització, utilitza els filtres normals de pestanyes de xat del joc.</value>
</data>
<data name="Privacy_Filter_Tree_Heading" xml:space="preserve">
<value>Filtre de privadesa i llista blanca</value>
</data>
<data name="Privacy_Whitelist_Help" xml:space="preserve">
<value>Tria quins canals es guarden a la base de dades local. Per defecte segueix la minimització de dades: només les teves pròpies converses. Utilitza els botons de sota per aplicar una configuració predefinida.</value>
</data>
@@ -597,18 +591,6 @@
</data>
<!-- Hellion Chat — General tab section headings -->
<data name="Settings_General_Input_Heading" xml:space="preserve">
<value>Entrada</value>
</data>
<data name="Settings_General_Audio_Heading" xml:space="preserve">
<value>Àudio &amp; notificacions</value>
</data>
<data name="Settings_General_Performance_Heading" xml:space="preserve">
<value>Rendiment</value>
</data>
<data name="Settings_General_Language_Heading" xml:space="preserve">
<value>Idioma &amp; ajudes d'entrada</value>
</data>
<!-- Hellion Chat — Appearance tab section headings -->
<data name="Settings_Appearance_Theme_Heading" xml:space="preserve">
@@ -625,32 +607,11 @@
</data>
<!-- Hellion Chat — Window tab section headings -->
<data name="Settings_Window_Hide_Heading" xml:space="preserve">
<value>Ocultació</value>
</data>
<data name="Settings_Window_InactivityHide_Heading" xml:space="preserve">
<value>Ocultació per inactivitat</value>
</data>
<data name="Settings_Window_Frame_Heading" xml:space="preserve">
<value>Marc de la finestra</value>
</data>
<data name="Settings_Window_Tooltips_Heading" xml:space="preserve">
<value>Informació emergent</value>
</data>
<!-- Hellion Chat — Chat tab section headings -->
<data name="Settings_Chat_AutoTellTabs_Heading" xml:space="preserve">
<value>Auto-Tell-Tabs</value>
</data>
<data name="Settings_Chat_Behaviour_Heading" xml:space="preserve">
<value>Comportament dels missatges</value>
</data>
<data name="Settings_Chat_Preview_Heading" xml:space="preserve">
<value>Previsualització</value>
</data>
<data name="Settings_Chat_Emotes_Heading" xml:space="preserve">
<value>Emotes</value>
</data>
<!-- Hellion Chat — Chat tab SymbolPicker -->
<data name="Settings_Chat_SymbolPicker_Enable_Name" xml:space="preserve">
@@ -672,15 +633,6 @@
</data>
<!-- Hellion Chat — Information tab section headings -->
<data name="Settings_Information_VersionInfo_Heading" xml:space="preserve">
<value>Informació de versió</value>
</data>
<data name="Settings_Information_About_Heading" xml:space="preserve">
<value>Quant a HellionChat</value>
</data>
<data name="Settings_Information_Changelog_Heading" xml:space="preserve">
<value>Changelog</value>
</data>
<!-- Hellion Chat — Default tab presets (channel-specific) -->
<data name="Tabs_Presets_System" xml:space="preserve">
@@ -811,12 +763,6 @@
<data name="Settings_Card_Tabs_Subtext" xml:space="preserve">
<value>Crea i configura pestanyes de xat personalitzades.</value>
</data>
<data name="Settings_Card_Privacy_Title" xml:space="preserve">
<value>Privadesa</value>
</data>
<data name="Settings_Card_Privacy_Subtext" xml:space="preserve">
<value>Filtre de privadesa per canal i el que es pot emmagatzemar.</value>
</data>
<data name="Settings_Card_Database_Title" xml:space="preserve">
<value>Base de dades</value>
</data>
@@ -824,10 +770,10 @@
<value>Emmagatzematge, migració, neteja de dades antigues</value>
</data>
<data name="Settings_Card_Information_Title" xml:space="preserve">
<value>Informació</value>
<value>Quant a</value>
</data>
<data name="Settings_Card_Information_Subtext" xml:space="preserve">
<value>Versió, missió, llicència i changelog.</value>
<value>Extensions, versió, informació del projecte, traductors i changelog.</value>
</data>
<data name="Settings_Tab_Themes" xml:space="preserve">
<value>Themes</value>
@@ -868,29 +814,11 @@
<data name="Appearance_UseCompactDensity_Description" xml:space="preserve">
<value>Canvia el disseny dels missatges del valor per defecte de files amb targetes a files d'una sola línia `[HH:mm] Remitent: Text`.</value>
</data>
<data name="Settings_Card_ThemeAndLayout_Title" xml:space="preserve">
<value>Theme &amp; Layout</value>
</data>
<data name="Settings_Card_ThemeAndLayout_Subtext" xml:space="preserve">
<value>Theme, marc de la finestra i estil de les marques de temps.</value>
</data>
<data name="Settings_Card_FontsAndColours_Title" xml:space="preserve">
<value>Fonts &amp; Colors</value>
</data>
<data name="Settings_Card_FontsAndColours_Subtext" xml:space="preserve">
<value>Font, mida de la font i colors del xat per canal.</value>
</data>
<data name="Settings_Card_DataManagement_Title" xml:space="preserve">
<value>Gestió de dades</value>
<value>Dades i privadesa</value>
</data>
<data name="Settings_Card_DataManagement_Subtext" xml:space="preserve">
<value>Retenció, neteja, exportació i estadístiques de la base de dades.</value>
</data>
<data name="Settings_Card_Integrations_Title" xml:space="preserve">
<value>Integracions</value>
</data>
<data name="Settings_Card_Integrations_Subtext" xml:space="preserve">
<value>Altres plugins de Dalamud amb els quals funciona HellionChat. Integracions pròximes en previsualització.</value>
<value>Filtre de privadesa, retenció, neteja, exportació i estadístiques de la base de dades.</value>
</data>
<data name="Settings_ThemeAndLayout_Theme_Heading" xml:space="preserve">
<value>Theme</value>
@@ -907,39 +835,12 @@
<data name="Settings_ThemeAndLayout_WindowOpacity_Description" xml:space="preserve">
<value>Quant de transparent és el fons de la finestra. Valors més baixos deixen veure més el joc. Consell: el menú per finestra de Dalamud (hamburguesa a la barra de títol) ofereix substitucions per finestra per a opacitat, desenfocament de fons, clic transparent i fixació; aquestes tenen prioritat sobre aquest control lliscant per a la finestra corresponent.</value>
</data>
<data name="Settings_FontsAndColours_Fonts_Heading" xml:space="preserve">
<value>Fonts</value>
</data>
<data name="Settings_FontsAndColours_Colours_Heading" xml:space="preserve">
<value>Colors del xat</value>
</data>
<data name="Settings_DataManagement_Storage_Heading" xml:space="preserve">
<value>Emmagatzematge</value>
</data>
<data name="Settings_DataManagement_Retention_Heading" xml:space="preserve">
<value>Retenció</value>
</data>
<data name="Settings_DataManagement_Cleanup_Heading" xml:space="preserve">
<value>Cleanup</value>
</data>
<data name="Settings_DataManagement_Export_Heading" xml:space="preserve">
<value>Export</value>
</data>
<data name="Settings_DataManagement_DbViewer_Heading" xml:space="preserve">
<value>Visualitzador de la base de dades</value>
</data>
<data name="Settings_DataManagement_Advanced_Heading" xml:space="preserve">
<value>Avançat (Maj+clic per obrir)</value>
</data>
<data name="Settings_Window_Frame_Behaviour_Heading" xml:space="preserve">
<value>Comportament</value>
</data>
<data name="Migration_v16_OverrideStyle_Toast" xml:space="preserve">
<value>Hellion Chat 1.2.1 ha reorganitzat el menú de configuració i ha eliminat l'antiga opció "Substitueix l'estil" (substituïda pel sistema de themes des de la versió 1.1.0). La resta de la configuració no ha canviat. La transparència de la finestra s'ha migrat a "Theme &amp; Layout". Una còpia de seguretat de la configuració anterior es troba a pluginConfigs/HellionChat.json.pre-v16-backup al costat del HellionChat.json actiu.</value>
</data>
<data name="Settings_Tab_Integrations" xml:space="preserve">
<value>Integracions</value>
</data>
<data name="Settings_Integrations_Intro" xml:space="preserve">
<value>Les integracions de plugins permeten que HellionChat funcioni conjuntament amb altres plugins de Dalamud instal·lats. Cada integració detecta automàticament el seu objectiu i es desactiva silenciosament quan el plugin objectiu no és present.</value>
</data>
@@ -1054,4 +955,195 @@
<value>Desactiva la transició de temes, les animacions en passar el cursor per la barra lateral i les targetes, i la pulsació de pestanyes no llegides. Els canvis de tema i els estats de cursor s'apliquen a l'instant.</value>
<comment>AI-assisted machine translation. Pending native-speaker review.</comment>
</data>
<!-- Hellion Chat — Settings Overhaul section titles (v1.5.6) -->
<data name="Settings_Section_Input" xml:space="preserve">
<value>Entrada</value>
</data>
<data name="Settings_Section_Sound" xml:space="preserve">
<value>So</value>
</data>
<data name="Settings_Section_Language" xml:space="preserve">
<value>Idioma</value>
</data>
<data name="Settings_Section_Performance" xml:space="preserve">
<value>Rendiment</value>
</data>
<data name="Settings_Section_Sound_TabsHint" xml:space="preserve">
<value>El so que es reprodueix per pestanya s'estableix a la pestanya Canals.</value>
</data>
<data name="Settings_Section_Theme" xml:space="preserve">
<value>Tema</value>
</data>
<data name="Settings_Section_Fonts" xml:space="preserve">
<value>Tipus de lletra</value>
</data>
<data name="Settings_Section_Colours" xml:space="preserve">
<value>Colors</value>
</data>
<data name="Settings_Section_WindowStyle" xml:space="preserve">
<value>Estil de finestra</value>
</data>
<data name="Settings_Section_Timestamps" xml:space="preserve">
<value>Marques de temps</value>
</data>
<data name="Settings_Section_Animations" xml:space="preserve">
<value>Animacions</value>
</data>
<data name="Settings_Section_Messages" xml:space="preserve">
<value>Missatges</value>
</data>
<data name="Settings_Section_InputPreview" xml:space="preserve">
<value>Entrada i previsualització</value>
</data>
<data name="Settings_Section_AutoTellTabs" xml:space="preserve">
<value>Pestanyes de tell automàtic</value>
</data>
<data name="Settings_Section_Emotes" xml:space="preserve">
<value>Emotes</value>
</data>
<data name="Settings_Section_LinksTooltips" xml:space="preserve">
<value>Enllaços i consells</value>
</data>
<data name="Settings_Section_NoviceNetwork" xml:space="preserve">
<value>Xarxa de novells</value>
</data>
<data name="Settings_Section_Hide" xml:space="preserve">
<value>Ocultar</value>
</data>
<data name="Settings_Section_InactivityHide" xml:space="preserve">
<value>Ocultar quan estigui inactiu</value>
</data>
<data name="Settings_Section_Frame" xml:space="preserve">
<value>Marc</value>
</data>
<data name="Settings_Section_Tab_Channels" xml:space="preserve">
<value>Canals</value>
</data>
<data name="Settings_Section_Tab_Display" xml:space="preserve">
<value>Visualització</value>
</data>
<data name="Settings_Section_Tab_Notification" xml:space="preserve">
<value>Notificació</value>
</data>
<data name="Settings_Section_Tab_Input" xml:space="preserve">
<value>Entrada</value>
</data>
<data name="Settings_Section_Tab_PopOut" xml:space="preserve">
<value>Finestra emergent</value>
</data>
<data name="Settings_Section_Tab_Volume_AllTabsHint" xml:space="preserve">
<value>Aquest volum s'aplica a totes les pestanyes.</value>
</data>
<data name="Settings_Section_PrivacyFilter" xml:space="preserve">
<value>Filtre de privacitat</value>
</data>
<data name="Settings_Section_Storage" xml:space="preserve">
<value>Emmagatzematge</value>
</data>
<data name="Settings_Section_Retention" xml:space="preserve">
<value>Retenció</value>
</data>
<data name="Settings_Section_Cleanup" xml:space="preserve">
<value>Neteja</value>
</data>
<data name="Settings_Section_Export" xml:space="preserve">
<value>Exportar</value>
</data>
<data name="Settings_Section_Database" xml:space="preserve">
<value>Base de dades</value>
</data>
<data name="Settings_Section_Extensions" xml:space="preserve">
<value>Extensions</value>
</data>
<data name="Settings_Section_PluginInfo" xml:space="preserve">
<value>Informació del connector</value>
</data>
<data name="Settings_Section_Project" xml:space="preserve">
<value>El projecte</value>
</data>
<data name="Settings_Section_Translators" xml:space="preserve">
<value>Traductors</value>
</data>
<data name="Settings_Section_Changelog" xml:space="preserve">
<value>Registre de canvis</value>
</data>
<data name="Settings_Chat_NotifyFailedTell_Name" xml:space="preserve">
<value>Notifica si el tell falla</value>
</data>
<data name="Settings_Chat_NotifyFailedTell_Description" xml:space="preserve">
<value>Mostra una notificació emergent quan un tell que has enviat no s'ha pogut lliurar (destinatari fora de línia, en una instància o bloquejant-te).</value>
</data>
<data name="Settings_Chat_NotifyPluginDisclosure_Name" xml:space="preserve">
<value>Avisa abans d'enviar símbols exclusius del connector</value>
</data>
<data name="Settings_Chat_NotifyPluginDisclosure_Description" xml:space="preserve">
<value>Mostra un avís quan un missatge que estàs a punt d'enviar conté símbols que només es mostren correctament per als jugadors que utilitzen HellionChat o un connector similar.</value>
</data>
<data name="Settings_Chat_WorldSuffix_Name" xml:space="preserve">
<value>Sufix del món</value>
</data>
<data name="Settings_Chat_WorldSuffix_Description" xml:space="preserve">
<value>Quan afegir el món d'origen al nom del remitent al registre de xat.</value>
</data>
<data name="Settings_Chat_NameForm_Name" xml:space="preserve">
<value>Format del nom</value>
</data>
<data name="Settings_Chat_NameForm_Description" xml:space="preserve">
<value>Com es mostren els noms dels remitents al registre de xat. El nom complet és el valor per defecte.</value>
</data>
<data name="NameDisplay_WorldSuffix_Never" xml:space="preserve">
<value>Mai</value>
</data>
<data name="NameDisplay_WorldSuffix_OtherWorldOnly" xml:space="preserve">
<value>Només altres móns</value>
</data>
<data name="NameDisplay_WorldSuffix_Always" xml:space="preserve">
<value>Sempre</value>
</data>
<data name="NameDisplay_NameForm_Full" xml:space="preserve">
<value>Nom complet</value>
</data>
<data name="NameDisplay_NameForm_FirstNameOnly" xml:space="preserve">
<value>Només el nom</value>
</data>
<data name="NameDisplay_NameForm_Initials" xml:space="preserve">
<value>Inicials</value>
</data>
<data name="Settings_General_CustomSoundVolume_Name" xml:space="preserve">
<value>Volum de so personalitzat</value>
</data>
<data name="Settings_General_CustomSoundVolume_Description" xml:space="preserve">
<value>Volum de reproducció dels tres sons de notificació personalitzats inclosos. No afecta els 16 sons del joc.</value>
</data>
<data name="Settings_ThemeAndLayout_WindowOpacityInactive_Name" xml:space="preserve">
<value>Opacitat de la finestra inactiva</value>
</data>
<data name="Settings_ThemeAndLayout_WindowOpacityInactive_Description" xml:space="preserve">
<value>Opacitat del fons de la finestra de xat principal mentre no està enfocada. El control lliscant anterior estableix el valor quan està enfocada. Una substitució per finestra al menú de fixació de Dalamud té prioritat sobre tots dos.</value>
</data>
<data name="Tabs_NotificationSound_Enable_Name" xml:space="preserve">
<value>So de notificació</value>
</data>
<data name="Tabs_NotificationSound_Description" xml:space="preserve">
<value>Reprodueix un so quan arriba un missatge a aquesta pestanya mentre estàs mirant una altra. Respecta el commutador de so global.</value>
</data>
<data name="Tabs_NotificationSound_Option" xml:space="preserve">
<value>So</value>
</data>
<data name="Tabs_NotificationSound_Preview" xml:space="preserve">
<value>Previsualitza el so seleccionat</value>
</data>
<data name="Tabs_NotificationSound_CustomOption" xml:space="preserve">
<value>So de Hellion</value>
</data>
<data name="FailedTell_Notification_Generic" xml:space="preserve">
<value>No s'ha pogut lliurar el tell.</value>
</data>
<data name="FailedTell_Notification_Named" xml:space="preserve">
<value>No s'ha pogut lliurar el tell a {0}.</value>
</data>
<data name="ChatInput_PluginDisclosure_Warning" xml:space="preserve">
<value>Aquest missatge conté símbols exclusius del connector que altres jugadors poden veure com a quadres buits. Prem Retorn de nou per enviar-lo igualment.</value>
</data>
</root>
+195 -103
View File
@@ -12,9 +12,6 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Privacy_Tab_Title" xml:space="preserve">
<value>Soukromí</value>
</data>
<data name="Privacy_FilterEnabled_Name" xml:space="preserve">
<value>Zapnout filtr soukromí</value>
</data>
@@ -24,9 +21,6 @@
<data name="Privacy_FilterEnabled_StorageOnly_Help" xml:space="preserve">
<value>Filtr ovlivňuje jen to, co se zapíše do lokální databáze. V chatu se pořád zobrazují všechny zprávy živě, vyloučené kanály se prostě přestanou ukládat. Chceš-li kanály odstranit i z viditelného zobrazení, použij normální filtry chat-záložek ve hře.</value>
</data>
<data name="Privacy_Filter_Tree_Heading" xml:space="preserve">
<value>Filtr soukromí a whitelist</value>
</data>
<data name="Privacy_Whitelist_Help" xml:space="preserve">
<value>Vyber, které kanály se ukládají do lokální databáze. Výchozí nastavení sleduje minimalizaci dat: pouze tvoje vlastní konverzace. Pomocí tlačítek níže použij předvolbu.</value>
</data>
@@ -597,18 +591,6 @@
</data>
<!-- Hellion Chat — General tab section headings -->
<data name="Settings_General_Input_Heading" xml:space="preserve">
<value>Vstup</value>
</data>
<data name="Settings_General_Audio_Heading" xml:space="preserve">
<value>Zvuk &amp; oznámení</value>
</data>
<data name="Settings_General_Performance_Heading" xml:space="preserve">
<value>Výkon</value>
</data>
<data name="Settings_General_Language_Heading" xml:space="preserve">
<value>Jazyk &amp; pomůcky vstupu</value>
</data>
<!-- Hellion Chat — Appearance tab section headings -->
<data name="Settings_Appearance_Theme_Heading" xml:space="preserve">
@@ -625,32 +607,11 @@
</data>
<!-- Hellion Chat — Window tab section headings -->
<data name="Settings_Window_Hide_Heading" xml:space="preserve">
<value>Skrývání</value>
</data>
<data name="Settings_Window_InactivityHide_Heading" xml:space="preserve">
<value>Skrývání při nečinnosti</value>
</data>
<data name="Settings_Window_Frame_Heading" xml:space="preserve">
<value>Rám okna</value>
</data>
<data name="Settings_Window_Tooltips_Heading" xml:space="preserve">
<value>Nápovědy</value>
</data>
<!-- Hellion Chat — Chat tab section headings -->
<data name="Settings_Chat_AutoTellTabs_Heading" xml:space="preserve">
<value>Auto-Tell-Tabs</value>
</data>
<data name="Settings_Chat_Behaviour_Heading" xml:space="preserve">
<value>Chování zpráv</value>
</data>
<data name="Settings_Chat_Preview_Heading" xml:space="preserve">
<value>Náhled</value>
</data>
<data name="Settings_Chat_Emotes_Heading" xml:space="preserve">
<value>Emoty</value>
</data>
<!-- Hellion Chat — Chat tab SymbolPicker -->
<data name="Settings_Chat_SymbolPicker_Enable_Name" xml:space="preserve">
@@ -672,15 +633,6 @@
</data>
<!-- Hellion Chat — Information tab section headings -->
<data name="Settings_Information_VersionInfo_Heading" xml:space="preserve">
<value>Informace o verzi</value>
</data>
<data name="Settings_Information_About_Heading" xml:space="preserve">
<value>O HellionChat</value>
</data>
<data name="Settings_Information_Changelog_Heading" xml:space="preserve">
<value>Changelog</value>
</data>
<!-- Hellion Chat — Default tab presets (channel-specific) -->
<data name="Tabs_Presets_System" xml:space="preserve">
@@ -811,12 +763,6 @@
<data name="Settings_Card_Tabs_Subtext" xml:space="preserve">
<value>Vytvárej a konfiguruj vlastní chat záložky.</value>
</data>
<data name="Settings_Card_Privacy_Title" xml:space="preserve">
<value>Soukromí</value>
</data>
<data name="Settings_Card_Privacy_Subtext" xml:space="preserve">
<value>Filtr soukromí podle kanálu a co smí být uloženo.</value>
</data>
<data name="Settings_Card_Database_Title" xml:space="preserve">
<value>Databáze</value>
</data>
@@ -824,10 +770,10 @@
<value>Úložiště, migrace, staré čištění</value>
</data>
<data name="Settings_Card_Information_Title" xml:space="preserve">
<value>Informace</value>
<value>O pluginu</value>
</data>
<data name="Settings_Card_Information_Subtext" xml:space="preserve">
<value>Verze, záměr, licence a changelog.</value>
<value>Rozšíření, verze, informace o projektu, překladatelé a changelog.</value>
</data>
<data name="Settings_Tab_Themes" xml:space="preserve">
<value>Themes</value>
@@ -868,29 +814,11 @@
<data name="Appearance_UseCompactDensity_Description" xml:space="preserve">
<value>Přepne rozvržení zpráv z výchozího karet zpět na jednořádkové `[HH:mm] Odesílatel: Text`.</value>
</data>
<data name="Settings_Card_ThemeAndLayout_Title" xml:space="preserve">
<value>Theme &amp; Layout</value>
</data>
<data name="Settings_Card_ThemeAndLayout_Subtext" xml:space="preserve">
<value>Theme, rám okna a styl časových razítek.</value>
</data>
<data name="Settings_Card_FontsAndColours_Title" xml:space="preserve">
<value>Fonts &amp; Colours</value>
</data>
<data name="Settings_Card_FontsAndColours_Subtext" xml:space="preserve">
<value>Písmo, velikost písma a barvy chatu podle kanálu.</value>
</data>
<data name="Settings_Card_DataManagement_Title" xml:space="preserve">
<value>Správa dat</value>
<value>Data a soukromí</value>
</data>
<data name="Settings_Card_DataManagement_Subtext" xml:space="preserve">
<value>Uchovávání, čištění, export a statistiky databáze.</value>
</data>
<data name="Settings_Card_Integrations_Title" xml:space="preserve">
<value>Integrace</value>
</data>
<data name="Settings_Card_Integrations_Subtext" xml:space="preserve">
<value>Ostatní Dalamud pluginy, se kterými HellionChat spolupracuje. Připravované integrace v náhledu.</value>
<value>Filtr soukromí, uchovávání, čištění, export a statistiky databáze.</value>
</data>
<data name="Settings_ThemeAndLayout_Theme_Heading" xml:space="preserve">
<value>Theme</value>
@@ -907,39 +835,12 @@
<data name="Settings_ThemeAndLayout_WindowOpacity_Description" xml:space="preserve">
<value>Jak průhledné je pozadí okna. Nižší hodnoty nechávají více hry prosvítat. Tip: nabídka Dalamud pro každé okno (hamburger v záhlaví) nabízí přepsání průhlednosti, rozostření pozadí, kliknutí skrz a připnutí pro konkrétní okno: ta mají přednost před tímto posuvníkem pro dané okno.</value>
</data>
<data name="Settings_FontsAndColours_Fonts_Heading" xml:space="preserve">
<value>Písma</value>
</data>
<data name="Settings_FontsAndColours_Colours_Heading" xml:space="preserve">
<value>Barvy chatu</value>
</data>
<data name="Settings_DataManagement_Storage_Heading" xml:space="preserve">
<value>Úložiště</value>
</data>
<data name="Settings_DataManagement_Retention_Heading" xml:space="preserve">
<value>Uchovávání</value>
</data>
<data name="Settings_DataManagement_Cleanup_Heading" xml:space="preserve">
<value>Čištění</value>
</data>
<data name="Settings_DataManagement_Export_Heading" xml:space="preserve">
<value>Export</value>
</data>
<data name="Settings_DataManagement_DbViewer_Heading" xml:space="preserve">
<value>Prohlížeč databáze</value>
</data>
<data name="Settings_DataManagement_Advanced_Heading" xml:space="preserve">
<value>Pokročilé (Shift+klik pro otevření)</value>
</data>
<data name="Settings_Window_Frame_Behaviour_Heading" xml:space="preserve">
<value>Chování</value>
</data>
<data name="Migration_v16_OverrideStyle_Toast" xml:space="preserve">
<value>Hellion Chat 1.2.1 přeorganizoval nabídku nastavení a odstranil starou možnost „Override style" (nahrazenou systémem themes od verze 1.1.0). Zbývající nastavení zůstávají nezměněna. Průhlednost okna byla přesunuta do „Theme &amp; Layout". Záloha předchozí konfigurace se nachází v pluginConfigs/HellionChat.json.pre-v16-backup vedle aktivního HellionChat.json.</value>
</data>
<data name="Settings_Tab_Integrations" xml:space="preserve">
<value>Integrace</value>
</data>
<data name="Settings_Integrations_Intro" xml:space="preserve">
<value>Integrace pluginů umožňují HellionChat spolupracovat s ostatními nainstalovanými Dalamud pluginy. Každá integrace automaticky detekuje svůj cíl a tiše se deaktivuje, když cílový plugin chybí.</value>
</data>
@@ -1053,4 +954,195 @@
<value>Vypne prolínání motivů, animace najetí myší na postranní panel a karty a pulzování nepřečtených karet. Změny motivu a stavy najetí myší se použijí okamžitě.</value>
<comment>AI-assisted machine translation. Pending native-speaker review.</comment>
</data>
<!-- Hellion Chat — Settings Overhaul section titles (v1.5.6) -->
<data name="Settings_Section_Input" xml:space="preserve">
<value>Vstup</value>
</data>
<data name="Settings_Section_Sound" xml:space="preserve">
<value>Zvuk</value>
</data>
<data name="Settings_Section_Language" xml:space="preserve">
<value>Jazyk</value>
</data>
<data name="Settings_Section_Performance" xml:space="preserve">
<value>Výkon</value>
</data>
<data name="Settings_Section_Sound_TabsHint" xml:space="preserve">
<value>Zvuk přehrávaný na každé kartě se nastavuje na kartě Kanály.</value>
</data>
<data name="Settings_Section_Theme" xml:space="preserve">
<value>Motiv</value>
</data>
<data name="Settings_Section_Fonts" xml:space="preserve">
<value>Písma</value>
</data>
<data name="Settings_Section_Colours" xml:space="preserve">
<value>Barvy</value>
</data>
<data name="Settings_Section_WindowStyle" xml:space="preserve">
<value>Styl okna</value>
</data>
<data name="Settings_Section_Timestamps" xml:space="preserve">
<value>Časová razítka</value>
</data>
<data name="Settings_Section_Animations" xml:space="preserve">
<value>Animace</value>
</data>
<data name="Settings_Section_Messages" xml:space="preserve">
<value>Zprávy</value>
</data>
<data name="Settings_Section_InputPreview" xml:space="preserve">
<value>Vstup a náhled</value>
</data>
<data name="Settings_Section_AutoTellTabs" xml:space="preserve">
<value>Automatické karty pro tell</value>
</data>
<data name="Settings_Section_Emotes" xml:space="preserve">
<value>Emoty</value>
</data>
<data name="Settings_Section_LinksTooltips" xml:space="preserve">
<value>Odkazy a popisky</value>
</data>
<data name="Settings_Section_NoviceNetwork" xml:space="preserve">
<value>Síť nováčků</value>
</data>
<data name="Settings_Section_Hide" xml:space="preserve">
<value>Skrýt</value>
</data>
<data name="Settings_Section_InactivityHide" xml:space="preserve">
<value>Skrýt při nečinnosti</value>
</data>
<data name="Settings_Section_Frame" xml:space="preserve">
<value>Rám</value>
</data>
<data name="Settings_Section_Tab_Channels" xml:space="preserve">
<value>Kanály</value>
</data>
<data name="Settings_Section_Tab_Display" xml:space="preserve">
<value>Zobrazení</value>
</data>
<data name="Settings_Section_Tab_Notification" xml:space="preserve">
<value>Oznámení</value>
</data>
<data name="Settings_Section_Tab_Input" xml:space="preserve">
<value>Vstup</value>
</data>
<data name="Settings_Section_Tab_PopOut" xml:space="preserve">
<value>Vyskakovací okno</value>
</data>
<data name="Settings_Section_Tab_Volume_AllTabsHint" xml:space="preserve">
<value>Tato hlasitost se vztahuje na všechny karty.</value>
</data>
<data name="Settings_Section_PrivacyFilter" xml:space="preserve">
<value>Filtr soukromí</value>
</data>
<data name="Settings_Section_Storage" xml:space="preserve">
<value>Úložiště</value>
</data>
<data name="Settings_Section_Retention" xml:space="preserve">
<value>Uchovávání</value>
</data>
<data name="Settings_Section_Cleanup" xml:space="preserve">
<value>Čištění</value>
</data>
<data name="Settings_Section_Export" xml:space="preserve">
<value>Export</value>
</data>
<data name="Settings_Section_Database" xml:space="preserve">
<value>Databáze</value>
</data>
<data name="Settings_Section_Extensions" xml:space="preserve">
<value>Rozšíření</value>
</data>
<data name="Settings_Section_PluginInfo" xml:space="preserve">
<value>Informace o pluginu</value>
</data>
<data name="Settings_Section_Project" xml:space="preserve">
<value>Projekt</value>
</data>
<data name="Settings_Section_Translators" xml:space="preserve">
<value>Překladatelé</value>
</data>
<data name="Settings_Section_Changelog" xml:space="preserve">
<value>Protokol změn</value>
</data>
<data name="Settings_Chat_NotifyFailedTell_Name" xml:space="preserve">
<value>Upozornit na neúspěšný tell</value>
</data>
<data name="Settings_Chat_NotifyFailedTell_Description" xml:space="preserve">
<value>Zobrazí upozornění, když tell, který jsi odeslal, nebylo možné doručit (příjemce je offline, v instanci nebo tě blokuje).</value>
</data>
<data name="Settings_Chat_NotifyPluginDisclosure_Name" xml:space="preserve">
<value>Varovat před odesláním symbolů pouze pro plugin</value>
</data>
<data name="Settings_Chat_NotifyPluginDisclosure_Description" xml:space="preserve">
<value>Zobrazí varování, když zpráva, kterou se chystá odeslat, obsahuje symboly, které se správně zobrazují pouze hráčům s HellionChat nebo podobným pluginem.</value>
</data>
<data name="Settings_Chat_WorldSuffix_Name" xml:space="preserve">
<value>Přípona světa</value>
</data>
<data name="Settings_Chat_WorldSuffix_Description" xml:space="preserve">
<value>Kdy přidat domovský svět k jménu odesílatele v chatu.</value>
</data>
<data name="Settings_Chat_NameForm_Name" xml:space="preserve">
<value>Formát jména</value>
</data>
<data name="Settings_Chat_NameForm_Description" xml:space="preserve">
<value>Jak se zobrazují jména odesílatelů v chatovém záznamu. Výchozí je plné jméno.</value>
</data>
<data name="NameDisplay_WorldSuffix_Never" xml:space="preserve">
<value>Nikdy</value>
</data>
<data name="NameDisplay_WorldSuffix_OtherWorldOnly" xml:space="preserve">
<value>Pouze jiné světy</value>
</data>
<data name="NameDisplay_WorldSuffix_Always" xml:space="preserve">
<value>Vždy</value>
</data>
<data name="NameDisplay_NameForm_Full" xml:space="preserve">
<value>Celé jméno</value>
</data>
<data name="NameDisplay_NameForm_FirstNameOnly" xml:space="preserve">
<value>Pouze křestní jméno</value>
</data>
<data name="NameDisplay_NameForm_Initials" xml:space="preserve">
<value>Iniciály</value>
</data>
<data name="Settings_General_CustomSoundVolume_Name" xml:space="preserve">
<value>Hlasitost vlastního zvuku</value>
</data>
<data name="Settings_General_CustomSoundVolume_Description" xml:space="preserve">
<value>Hlasitost přehrávání tří přiložených vlastních zvuků oznámení. Neovlivňuje 16 herních zvuků.</value>
</data>
<data name="Settings_ThemeAndLayout_WindowOpacityInactive_Name" xml:space="preserve">
<value>Průhlednost neaktivního okna</value>
</data>
<data name="Settings_ThemeAndLayout_WindowOpacityInactive_Description" xml:space="preserve">
<value>Průhlednost pozadí hlavního chatovacího okna, když není aktivní. Posuvník výše nastavuje hodnotu pro aktivní okno. Individuální nastavení v nabídce připnutí Dalamud má přednost před oběma.</value>
</data>
<data name="Tabs_NotificationSound_Enable_Name" xml:space="preserve">
<value>Zvuk oznámení</value>
</data>
<data name="Tabs_NotificationSound_Description" xml:space="preserve">
<value>Přehraje zvuk, když přijde zpráva na tuto kartu, zatímco se díváš na jinou kartu. Respektuje globální přepínač zvuku.</value>
</data>
<data name="Tabs_NotificationSound_Option" xml:space="preserve">
<value>Zvuk</value>
</data>
<data name="Tabs_NotificationSound_Preview" xml:space="preserve">
<value>Zobrazit náhled vybraného zvuku</value>
</data>
<data name="Tabs_NotificationSound_CustomOption" xml:space="preserve">
<value>Hellion zvuk</value>
</data>
<data name="FailedTell_Notification_Generic" xml:space="preserve">
<value>Tell nebylo možné doručit.</value>
</data>
<data name="FailedTell_Notification_Named" xml:space="preserve">
<value>Tell pro {0} nebylo možné doručit.</value>
</data>
<data name="ChatInput_PluginDisclosure_Warning" xml:space="preserve">
<value>Tato zpráva obsahuje symboly pouze pro plugin, které ostatní hráči mohou vidět jako prázdné čtverce. Stiskni Enter znovu pro odeslání.</value>
</data>
</root>
+195 -103
View File
@@ -12,9 +12,6 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Privacy_Tab_Title" xml:space="preserve">
<value>Privatliv</value>
</data>
<data name="Privacy_FilterEnabled_Name" xml:space="preserve">
<value>Aktivér privatlivsfilter</value>
</data>
@@ -24,9 +21,6 @@
<data name="Privacy_FilterEnabled_StorageOnly_Help" xml:space="preserve">
<value>Filteret styrer kun, hvad der skrives til den lokale database. Chat-loggen viser stadig alle beskeder i realtid. Ekskluderede kanaler gemmes blot ikke længere. Hvis du også vil fjerne kanaler fra den synlige visning, skal du bruge spillets normale chat-tab-filtre.</value>
</data>
<data name="Privacy_Filter_Tree_Heading" xml:space="preserve">
<value>Privatlivsfilter og hvidliste</value>
</data>
<data name="Privacy_Whitelist_Help" xml:space="preserve">
<value>Vælg hvilke kanaler der gemmes til den lokale database. Standard følger dataminimering: kun dine egne samtaler. Brug knapperne nedenfor til at anvende en forudindstilling.</value>
</data>
@@ -597,18 +591,6 @@
</data>
<!-- Hellion Chat — General tab section headings -->
<data name="Settings_General_Input_Heading" xml:space="preserve">
<value>Input</value>
</data>
<data name="Settings_General_Audio_Heading" xml:space="preserve">
<value>Lyd &amp; notifikationer</value>
</data>
<data name="Settings_General_Performance_Heading" xml:space="preserve">
<value>Ydeevne</value>
</data>
<data name="Settings_General_Language_Heading" xml:space="preserve">
<value>Sprog &amp; inputhjælp</value>
</data>
<!-- Hellion Chat — Appearance tab section headings -->
<data name="Settings_Appearance_Theme_Heading" xml:space="preserve">
@@ -625,32 +607,11 @@
</data>
<!-- Hellion Chat — Window tab section headings -->
<data name="Settings_Window_Hide_Heading" xml:space="preserve">
<value>Skjul</value>
</data>
<data name="Settings_Window_InactivityHide_Heading" xml:space="preserve">
<value>Skjul ved inaktivitet</value>
</data>
<data name="Settings_Window_Frame_Heading" xml:space="preserve">
<value>Vinduesramme</value>
</data>
<data name="Settings_Window_Tooltips_Heading" xml:space="preserve">
<value>Tooltips</value>
</data>
<!-- Hellion Chat — Chat tab section headings -->
<data name="Settings_Chat_AutoTellTabs_Heading" xml:space="preserve">
<value>Auto-Tell-Tabs</value>
</data>
<data name="Settings_Chat_Behaviour_Heading" xml:space="preserve">
<value>Beskedadfærd</value>
</data>
<data name="Settings_Chat_Preview_Heading" xml:space="preserve">
<value>Forhåndsvisning</value>
</data>
<data name="Settings_Chat_Emotes_Heading" xml:space="preserve">
<value>Emotes</value>
</data>
<!-- Hellion Chat — Chat tab SymbolPicker -->
<data name="Settings_Chat_SymbolPicker_Enable_Name" xml:space="preserve">
@@ -672,15 +633,6 @@
</data>
<!-- Hellion Chat — Information tab section headings -->
<data name="Settings_Information_VersionInfo_Heading" xml:space="preserve">
<value>Versionsinfo</value>
</data>
<data name="Settings_Information_About_Heading" xml:space="preserve">
<value>Om HellionChat</value>
</data>
<data name="Settings_Information_Changelog_Heading" xml:space="preserve">
<value>Changelog</value>
</data>
<!-- Hellion Chat — Default tab presets (channel-specific) -->
<data name="Tabs_Presets_System" xml:space="preserve">
@@ -811,12 +763,6 @@
<data name="Settings_Card_Tabs_Subtext" xml:space="preserve">
<value>Opret og konfigurér brugerdefinerede chat-tabs.</value>
</data>
<data name="Settings_Card_Privacy_Title" xml:space="preserve">
<value>Privatliv</value>
</data>
<data name="Settings_Card_Privacy_Subtext" xml:space="preserve">
<value>Privatlivsfilter pr. kanal og hvad der må gemmes.</value>
</data>
<data name="Settings_Card_Database_Title" xml:space="preserve">
<value>Database</value>
</data>
@@ -824,10 +770,10 @@
<value>Lagring, migration, gammel oprydning</value>
</data>
<data name="Settings_Card_Information_Title" xml:space="preserve">
<value>Information</value>
<value>Om</value>
</data>
<data name="Settings_Card_Information_Subtext" xml:space="preserve">
<value>Version, formål, licens og changelog.</value>
<value>Udvidelser, version, projektoplysninger, oversættere og changelog.</value>
</data>
<data name="Settings_Tab_Themes" xml:space="preserve">
<value>Themes</value>
@@ -868,29 +814,11 @@
<data name="Appearance_UseCompactDensity_Description" xml:space="preserve">
<value>Skifter beskedlayoutet fra standard kortrækker tilbage til enkeltlinje `[HH:mm] Afsender: Tekst`-rækker.</value>
</data>
<data name="Settings_Card_ThemeAndLayout_Title" xml:space="preserve">
<value>Theme &amp; Layout</value>
</data>
<data name="Settings_Card_ThemeAndLayout_Subtext" xml:space="preserve">
<value>Theme, vinduesramme og tidsstempelstil.</value>
</data>
<data name="Settings_Card_FontsAndColours_Title" xml:space="preserve">
<value>Skrifttyper &amp; Farver</value>
</data>
<data name="Settings_Card_FontsAndColours_Subtext" xml:space="preserve">
<value>Skrifttype, skriftstørrelse og chatfarver pr. kanal.</value>
</data>
<data name="Settings_Card_DataManagement_Title" xml:space="preserve">
<value>Datastyring</value>
<value>Data og privatliv</value>
</data>
<data name="Settings_Card_DataManagement_Subtext" xml:space="preserve">
<value>Opbevaring, oprydning, eksport og databasestatistik.</value>
</data>
<data name="Settings_Card_Integrations_Title" xml:space="preserve">
<value>Integrationer</value>
</data>
<data name="Settings_Card_Integrations_Subtext" xml:space="preserve">
<value>Andre Dalamud-plugins som HellionChat arbejder sammen med. Kommende integrationer i forhåndsvisning.</value>
<value>Privatlivsfilter, opbevaring, oprydning, eksport og databasestatistik.</value>
</data>
<data name="Settings_ThemeAndLayout_Theme_Heading" xml:space="preserve">
<value>Theme</value>
@@ -907,39 +835,12 @@
<data name="Settings_ThemeAndLayout_WindowOpacity_Description" xml:space="preserve">
<value>Hvor gennemsigtigt vinduesbaggrunden er. Lavere værdier lader mere af spillet skinne igennem. Tip: Dalamud's per-vindue-menu (hamburger i titellinjen) tilbyder per-vindue-tilsidesættelser for opacitet, baggrundssløring, klik-igennem og fastgørelse: de har forrang over denne skyderknap for det pågældende vindue.</value>
</data>
<data name="Settings_FontsAndColours_Fonts_Heading" xml:space="preserve">
<value>Skrifttyper</value>
</data>
<data name="Settings_FontsAndColours_Colours_Heading" xml:space="preserve">
<value>Chatfarver</value>
</data>
<data name="Settings_DataManagement_Storage_Heading" xml:space="preserve">
<value>Lagring</value>
</data>
<data name="Settings_DataManagement_Retention_Heading" xml:space="preserve">
<value>Opbevaring</value>
</data>
<data name="Settings_DataManagement_Cleanup_Heading" xml:space="preserve">
<value>Oprydning</value>
</data>
<data name="Settings_DataManagement_Export_Heading" xml:space="preserve">
<value>Eksport</value>
</data>
<data name="Settings_DataManagement_DbViewer_Heading" xml:space="preserve">
<value>Databasefremviser</value>
</data>
<data name="Settings_DataManagement_Advanced_Heading" xml:space="preserve">
<value>Avanceret (Shift+klik for at åbne)</value>
</data>
<data name="Settings_Window_Frame_Behaviour_Heading" xml:space="preserve">
<value>Adfærd</value>
</data>
<data name="Migration_v16_OverrideStyle_Toast" xml:space="preserve">
<value>Hellion Chat 1.2.1 har omorganiseret indstillingsmenuen og fjernet den gamle "Tilsidesæt stil"-indstilling (erstattet af theme-systemet fra 1.1.0). Dine øvrige indstillinger er uændret. Vinduesgennemsigtighed er migreret til "Theme &amp; Layout". En sikkerhedskopi af den forrige konfiguration ligger ved siden af den aktive HellionChat.json som pluginConfigs/HellionChat.json.pre-v16-backup.</value>
</data>
<data name="Settings_Tab_Integrations" xml:space="preserve">
<value>Integrationer</value>
</data>
<data name="Settings_Integrations_Intro" xml:space="preserve">
<value>Plugin-integrationer lader HellionChat arbejde sammen med andre installerede Dalamud-plugins. Hver integration registrerer automatisk sit mål og deaktiverer sig stille, når målplugin'et mangler.</value>
</data>
@@ -1053,4 +954,195 @@
<value>Deaktiverer temaovergangen, hover-animationer for sidepanel og kort samt pulseringen af ulæste faner. Temaskift og hover-tilstande anvendes i stedet med det samme.</value>
<comment>AI-assisted machine translation. Pending native-speaker review.</comment>
</data>
<!-- Hellion Chat — Settings Overhaul section titles (v1.5.6) -->
<data name="Settings_Section_Input" xml:space="preserve">
<value>Input</value>
</data>
<data name="Settings_Section_Sound" xml:space="preserve">
<value>Lyd</value>
</data>
<data name="Settings_Section_Language" xml:space="preserve">
<value>Sprog</value>
</data>
<data name="Settings_Section_Performance" xml:space="preserve">
<value>Ydeevne</value>
</data>
<data name="Settings_Section_Sound_TabsHint" xml:space="preserve">
<value>Hvilket lyd der afspilles pr. fane indstilles under fanen Kanaler.</value>
</data>
<data name="Settings_Section_Theme" xml:space="preserve">
<value>Tema</value>
</data>
<data name="Settings_Section_Fonts" xml:space="preserve">
<value>Skrifttyper</value>
</data>
<data name="Settings_Section_Colours" xml:space="preserve">
<value>Farver</value>
</data>
<data name="Settings_Section_WindowStyle" xml:space="preserve">
<value>Vinduesstil</value>
</data>
<data name="Settings_Section_Timestamps" xml:space="preserve">
<value>Tidsstempler</value>
</data>
<data name="Settings_Section_Animations" xml:space="preserve">
<value>Animationer</value>
</data>
<data name="Settings_Section_Messages" xml:space="preserve">
<value>Beskeder</value>
</data>
<data name="Settings_Section_InputPreview" xml:space="preserve">
<value>Input og forhåndsvisning</value>
</data>
<data name="Settings_Section_AutoTellTabs" xml:space="preserve">
<value>Auto-tell-faner</value>
</data>
<data name="Settings_Section_Emotes" xml:space="preserve">
<value>Emotes</value>
</data>
<data name="Settings_Section_LinksTooltips" xml:space="preserve">
<value>Links og værktøjstip</value>
</data>
<data name="Settings_Section_NoviceNetwork" xml:space="preserve">
<value>Begyndernetværk</value>
</data>
<data name="Settings_Section_Hide" xml:space="preserve">
<value>Skjul</value>
</data>
<data name="Settings_Section_InactivityHide" xml:space="preserve">
<value>Skjul ved inaktivitet</value>
</data>
<data name="Settings_Section_Frame" xml:space="preserve">
<value>Ramme</value>
</data>
<data name="Settings_Section_Tab_Channels" xml:space="preserve">
<value>Kanaler</value>
</data>
<data name="Settings_Section_Tab_Display" xml:space="preserve">
<value>Visning</value>
</data>
<data name="Settings_Section_Tab_Notification" xml:space="preserve">
<value>Notifikation</value>
</data>
<data name="Settings_Section_Tab_Input" xml:space="preserve">
<value>Input</value>
</data>
<data name="Settings_Section_Tab_PopOut" xml:space="preserve">
<value>Popud-vindue</value>
</data>
<data name="Settings_Section_Tab_Volume_AllTabsHint" xml:space="preserve">
<value>Denne lydstyrke gælder for alle faner.</value>
</data>
<data name="Settings_Section_PrivacyFilter" xml:space="preserve">
<value>Privatlivsfilter</value>
</data>
<data name="Settings_Section_Storage" xml:space="preserve">
<value>Lager</value>
</data>
<data name="Settings_Section_Retention" xml:space="preserve">
<value>Opbevaring</value>
</data>
<data name="Settings_Section_Cleanup" xml:space="preserve">
<value>Oprydning</value>
</data>
<data name="Settings_Section_Export" xml:space="preserve">
<value>Eksport</value>
</data>
<data name="Settings_Section_Database" xml:space="preserve">
<value>Database</value>
</data>
<data name="Settings_Section_Extensions" xml:space="preserve">
<value>Udvidelser</value>
</data>
<data name="Settings_Section_PluginInfo" xml:space="preserve">
<value>Plugin-info</value>
</data>
<data name="Settings_Section_Project" xml:space="preserve">
<value>Projektet</value>
</data>
<data name="Settings_Section_Translators" xml:space="preserve">
<value>Oversættere</value>
</data>
<data name="Settings_Section_Changelog" xml:space="preserve">
<value>Ændringslog</value>
</data>
<data name="Settings_Chat_NotifyFailedTell_Name" xml:space="preserve">
<value>Giv besked ved fejlet tell</value>
</data>
<data name="Settings_Chat_NotifyFailedTell_Description" xml:space="preserve">
<value>Vis en toast-meddelelse, når et tell du sendte ikke kunne leveres (modtageren er offline, i en instans eller blokerer dig).</value>
</data>
<data name="Settings_Chat_NotifyPluginDisclosure_Name" xml:space="preserve">
<value>Advar inden afsendelse af plugin-kun symboler</value>
</data>
<data name="Settings_Chat_NotifyPluginDisclosure_Description" xml:space="preserve">
<value>Vis en advarsel, når en besked du er ved at sende indeholder symboler, der kun vises korrekt for spillere med HellionChat eller et lignende plugin.</value>
</data>
<data name="Settings_Chat_WorldSuffix_Name" xml:space="preserve">
<value>Verdenssuffix</value>
</data>
<data name="Settings_Chat_WorldSuffix_Description" xml:space="preserve">
<value>Hvornår hjemverdenens navn tilføjes til afsenderens navn i chatkloggen.</value>
</data>
<data name="Settings_Chat_NameForm_Name" xml:space="preserve">
<value>Navneformat</value>
</data>
<data name="Settings_Chat_NameForm_Description" xml:space="preserve">
<value>Hvordan afsendernavne vises i chatloggen. Fuldt navn er standarden.</value>
</data>
<data name="NameDisplay_WorldSuffix_Never" xml:space="preserve">
<value>Aldrig</value>
</data>
<data name="NameDisplay_WorldSuffix_OtherWorldOnly" xml:space="preserve">
<value>Kun andre verdener</value>
</data>
<data name="NameDisplay_WorldSuffix_Always" xml:space="preserve">
<value>Altid</value>
</data>
<data name="NameDisplay_NameForm_Full" xml:space="preserve">
<value>Fuldt navn</value>
</data>
<data name="NameDisplay_NameForm_FirstNameOnly" xml:space="preserve">
<value>Kun fornavn</value>
</data>
<data name="NameDisplay_NameForm_Initials" xml:space="preserve">
<value>Initialer</value>
</data>
<data name="Settings_General_CustomSoundVolume_Name" xml:space="preserve">
<value>Brugerdefineret lydstyrke</value>
</data>
<data name="Settings_General_CustomSoundVolume_Description" xml:space="preserve">
<value>Afspilningsstyrke for de tre medfølgende brugerdefinerede notifikationslyde. Påvirker ikke de 16 spilhyde.</value>
</data>
<data name="Settings_ThemeAndLayout_WindowOpacityInactive_Name" xml:space="preserve">
<value>Inaktiv vinduesopacitet</value>
</data>
<data name="Settings_ThemeAndLayout_WindowOpacityInactive_Description" xml:space="preserve">
<value>Baggrundsopacitet for det primære chatvindue, mens det ikke er i fokus. Skyderen ovenfor angiver værdien i fokus. En tilsidesættelse per vindue i Dalamud-fastgøringsmenuen har forrang frem for begge.</value>
</data>
<data name="Tabs_NotificationSound_Enable_Name" xml:space="preserve">
<value>Notifikationslyd</value>
</data>
<data name="Tabs_NotificationSound_Description" xml:space="preserve">
<value>Afspil en lyd, når en besked ankommer til denne fane, mens du kigger på en anden fane. Respekterer den globale lydkontakt.</value>
</data>
<data name="Tabs_NotificationSound_Option" xml:space="preserve">
<value>Lyd</value>
</data>
<data name="Tabs_NotificationSound_Preview" xml:space="preserve">
<value>Forhåndsvis den valgte lyd</value>
</data>
<data name="Tabs_NotificationSound_CustomOption" xml:space="preserve">
<value>Hellion-lyd</value>
</data>
<data name="FailedTell_Notification_Generic" xml:space="preserve">
<value>Et tell kunne ikke leveres.</value>
</data>
<data name="FailedTell_Notification_Named" xml:space="preserve">
<value>Tell til {0} kunne ikke leveres.</value>
</data>
<data name="ChatInput_PluginDisclosure_Warning" xml:space="preserve">
<value>Denne besked indeholder plugin-kun symboler, som andre spillere muligvis ser som tomme bokse. Tryk Enter igen for at sende alligevel.</value>
</data>
</root>
+195 -103
View File
@@ -12,9 +12,6 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Privacy_Tab_Title" xml:space="preserve">
<value>Datenschutz</value>
</data>
<data name="Privacy_FilterEnabled_Name" xml:space="preserve">
<value>Datenschutz-Filter aktivieren</value>
</data>
@@ -24,9 +21,6 @@
<data name="Privacy_FilterEnabled_StorageOnly_Help" xml:space="preserve">
<value>Der Filter steuert nur, was in die lokale Datenbank geschrieben wird. Im Chat-Log siehst du weiterhin jede Nachricht live, ausgeschlossene Kanäle werden nur nicht mehr gespeichert. Wenn du Kanäle auch aus der sichtbaren Anzeige entfernen willst, nutze die normalen Chat-Tab-Filter im Spiel.</value>
</data>
<data name="Privacy_Filter_Tree_Heading" xml:space="preserve">
<value>Privacy-Filter und Whitelist</value>
</data>
<data name="Privacy_Whitelist_Help" xml:space="preserve">
<value>Wähle aus, welche Kanäle in die lokale Datenbank gespeichert werden. Standard nach Datensparsamkeit: nur deine eigenen Konversationen. Über die Buttons unten kannst du eine Voreinstellung anwenden.</value>
</data>
@@ -597,18 +591,6 @@
</data>
<!-- Hellion Chat — Sektions-Überschriften des Allgemein-Tabs -->
<data name="Settings_General_Input_Heading" xml:space="preserve">
<value>Eingabe</value>
</data>
<data name="Settings_General_Audio_Heading" xml:space="preserve">
<value>Audio &amp; Benachrichtigungen</value>
</data>
<data name="Settings_General_Performance_Heading" xml:space="preserve">
<value>Performance</value>
</data>
<data name="Settings_General_Language_Heading" xml:space="preserve">
<value>Sprache &amp; Eingabe-Hilfen</value>
</data>
<!-- Hellion Chat — Sektions-Überschriften des Aussehen-Tabs -->
<data name="Settings_Appearance_Theme_Heading" xml:space="preserve">
@@ -625,32 +607,11 @@
</data>
<!-- Hellion Chat — Sektions-Überschriften des Fenster-Tabs -->
<data name="Settings_Window_Hide_Heading" xml:space="preserve">
<value>Verstecken</value>
</data>
<data name="Settings_Window_InactivityHide_Heading" xml:space="preserve">
<value>Inaktivitäts-Verstecken</value>
</data>
<data name="Settings_Window_Frame_Heading" xml:space="preserve">
<value>Fenster-Rahmen</value>
</data>
<data name="Settings_Window_Tooltips_Heading" xml:space="preserve">
<value>Tooltips</value>
</data>
<!-- Hellion Chat — Sektions-Überschriften des Chat-Tabs -->
<data name="Settings_Chat_AutoTellTabs_Heading" xml:space="preserve">
<value>Auto-Tell-Tabs</value>
</data>
<data name="Settings_Chat_Behaviour_Heading" xml:space="preserve">
<value>Nachrichten-Verhalten</value>
</data>
<data name="Settings_Chat_Preview_Heading" xml:space="preserve">
<value>Vorschau</value>
</data>
<data name="Settings_Chat_Emotes_Heading" xml:space="preserve">
<value>Emotes</value>
</data>
<!-- Hellion Chat — Chat-Tab SymbolPicker -->
<data name="Settings_Chat_SymbolPicker_Enable_Name" xml:space="preserve">
@@ -672,15 +633,6 @@
</data>
<!-- Hellion Chat — Sektions-Überschriften des Information-Tabs -->
<data name="Settings_Information_VersionInfo_Heading" xml:space="preserve">
<value>Versionsinfo</value>
</data>
<data name="Settings_Information_About_Heading" xml:space="preserve">
<value>Über HellionChat</value>
</data>
<data name="Settings_Information_Changelog_Heading" xml:space="preserve">
<value>Changelog</value>
</data>
<!-- Hellion Chat — Default-Tab-Presets (kanalspezifisch) -->
<data name="Tabs_Presets_System" xml:space="preserve">
@@ -811,12 +763,6 @@
<data name="Settings_Card_Tabs_Subtext" xml:space="preserve">
<value>Eigene Chat-Tabs anlegen und konfigurieren.</value>
</data>
<data name="Settings_Card_Privacy_Title" xml:space="preserve">
<value>Datenschutz</value>
</data>
<data name="Settings_Card_Privacy_Subtext" xml:space="preserve">
<value>Privacy-Filter pro Channel und was gespeichert werden darf.</value>
</data>
<data name="Settings_Card_Database_Title" xml:space="preserve">
<value>Datenbank</value>
</data>
@@ -824,10 +770,10 @@
<value>Speicher, Migration, alte Bereinigung</value>
</data>
<data name="Settings_Card_Information_Title" xml:space="preserve">
<value>Information</value>
<value>Über</value>
</data>
<data name="Settings_Card_Information_Subtext" xml:space="preserve">
<value>Version, Mission, Lizenz und Changelog.</value>
<value>Erweiterungen, Version, Projektinformationen, Übersetzer und Changelog.</value>
</data>
<data name="Settings_Tab_Themes" xml:space="preserve">
<value>Themes</value>
@@ -868,29 +814,11 @@
<data name="Appearance_UseCompactDensity_Description" xml:space="preserve">
<value>Schaltet das Message-Layout vom Card-Row-Default zurück auf einzeilige `[HH:mm] Sender: Text` Zeilen.</value>
</data>
<data name="Settings_Card_ThemeAndLayout_Title" xml:space="preserve">
<value>Theme &amp; Layout</value>
</data>
<data name="Settings_Card_ThemeAndLayout_Subtext" xml:space="preserve">
<value>Theme, Fenster-Rahmen und Zeitstempel-Style.</value>
</data>
<data name="Settings_Card_FontsAndColours_Title" xml:space="preserve">
<value>Schriften &amp; Farben</value>
</data>
<data name="Settings_Card_FontsAndColours_Subtext" xml:space="preserve">
<value>Schriftart, Schriftgröße und Chat-Farben pro Channel.</value>
</data>
<data name="Settings_Card_DataManagement_Title" xml:space="preserve">
<value>Daten-Verwaltung</value>
<value>Daten &amp; Privatsphäre</value>
</data>
<data name="Settings_Card_DataManagement_Subtext" xml:space="preserve">
<value>Aufbewahrung, Aufräumen, Export und Datenbank-Statistiken.</value>
</data>
<data name="Settings_Card_Integrations_Title" xml:space="preserve">
<value>Integrationen</value>
</data>
<data name="Settings_Card_Integrations_Subtext" xml:space="preserve">
<value>Andere Dalamud-Plugins, mit denen HellionChat zusammenarbeitet. Kommende Integrationen in der Vorschau.</value>
<value>Privatsphäre-Filter, Aufbewahrung, Aufräumen, Export und Datenbank-Statistiken.</value>
</data>
<data name="Settings_ThemeAndLayout_Theme_Heading" xml:space="preserve">
<value>Theme</value>
@@ -907,39 +835,12 @@
<data name="Settings_ThemeAndLayout_WindowOpacity_Description" xml:space="preserve">
<value>Wie durchsichtig der Fensterhintergrund ist. Niedrigere Werte lassen mehr vom Spiel durchscheinen. Tipp: Dalamud's Per-Window-Menü (Hamburger in der Titelleiste) bietet pro Fenster eigene Overrides für Deckkraft, Hintergrund-Blur, Durchklick und Anpinnen: die haben Vorrang über diesen Slider für das jeweilige Fenster.</value>
</data>
<data name="Settings_FontsAndColours_Fonts_Heading" xml:space="preserve">
<value>Schriftarten</value>
</data>
<data name="Settings_FontsAndColours_Colours_Heading" xml:space="preserve">
<value>Chat-Farben</value>
</data>
<data name="Settings_DataManagement_Storage_Heading" xml:space="preserve">
<value>Speicherung</value>
</data>
<data name="Settings_DataManagement_Retention_Heading" xml:space="preserve">
<value>Aufbewahrung</value>
</data>
<data name="Settings_DataManagement_Cleanup_Heading" xml:space="preserve">
<value>Cleanup</value>
</data>
<data name="Settings_DataManagement_Export_Heading" xml:space="preserve">
<value>Export</value>
</data>
<data name="Settings_DataManagement_DbViewer_Heading" xml:space="preserve">
<value>Datenbank-Viewer</value>
</data>
<data name="Settings_DataManagement_Advanced_Heading" xml:space="preserve">
<value>Erweitert (Shift+Klick zum Öffnen)</value>
</data>
<data name="Settings_Window_Frame_Behaviour_Heading" xml:space="preserve">
<value>Verhalten</value>
</data>
<data name="Migration_v16_OverrideStyle_Toast" xml:space="preserve">
<value>Hellion Chat 1.2.1 hat das Settings-Menü neu sortiert und die alte „Stilüberschreiben"-Option entfernt (überholt durch das Theme-System aus 1.1.0). Deine restlichen Einstellungen bleiben unverändert. Die Fenster-Transparenz ist nach „Theme &amp; Layout" migriert. Ein Backup der vorherigen Config liegt unter pluginConfigs/HellionChat.json.pre-v16-backup neben der aktiven HellionChat.json.</value>
</data>
<data name="Settings_Tab_Integrations" xml:space="preserve">
<value>Integrationen</value>
</data>
<data name="Settings_Integrations_Intro" xml:space="preserve">
<value>Plugin-Integrationen lassen HellionChat mit anderen installierten Dalamud-Plugins zusammenarbeiten. Jede Integration erkennt ihr Ziel automatisch und deaktiviert sich still, wenn das Ziel-Plugin fehlt.</value>
</data>
@@ -1048,4 +949,195 @@
<data name="Settings_ThemeAndLayout_ReduceMotion_Description" xml:space="preserve">
<value>Deaktiviert die Theme-Überblendung, die Hover-Animationen von Seitenleiste und Karten sowie das Pulsieren ungelesener Tabs. Theme-Wechsel und Hover-Zustände greifen dann sofort.</value>
</data>
<!-- Hellion Chat — Settings Overhaul section titles (v1.5.6) -->
<data name="Settings_Section_Input" xml:space="preserve">
<value>Eingabe</value>
</data>
<data name="Settings_Section_Sound" xml:space="preserve">
<value>Audio</value>
</data>
<data name="Settings_Section_Language" xml:space="preserve">
<value>Sprache</value>
</data>
<data name="Settings_Section_Performance" xml:space="preserve">
<value>Performance</value>
</data>
<data name="Settings_Section_Sound_TabsHint" xml:space="preserve">
<value>Welcher Sound pro Tab abgespielt wird, wird im Kanäle-Tab eingestellt.</value>
</data>
<data name="Settings_Section_Theme" xml:space="preserve">
<value>Theme</value>
</data>
<data name="Settings_Section_Fonts" xml:space="preserve">
<value>Schriftarten</value>
</data>
<data name="Settings_Section_Colours" xml:space="preserve">
<value>Farben</value>
</data>
<data name="Settings_Section_WindowStyle" xml:space="preserve">
<value>Fenster-Stil</value>
</data>
<data name="Settings_Section_Timestamps" xml:space="preserve">
<value>Zeitstempel</value>
</data>
<data name="Settings_Section_Animations" xml:space="preserve">
<value>Animationen</value>
</data>
<data name="Settings_Section_Messages" xml:space="preserve">
<value>Nachrichten</value>
</data>
<data name="Settings_Section_InputPreview" xml:space="preserve">
<value>Eingabe &amp; Vorschau</value>
</data>
<data name="Settings_Section_AutoTellTabs" xml:space="preserve">
<value>Auto-Tell-Tabs</value>
</data>
<data name="Settings_Section_Emotes" xml:space="preserve">
<value>Emotes</value>
</data>
<data name="Settings_Section_LinksTooltips" xml:space="preserve">
<value>Links &amp; Tooltips</value>
</data>
<data name="Settings_Section_NoviceNetwork" xml:space="preserve">
<value>Anfänger-Netzwerk</value>
</data>
<data name="Settings_Section_Hide" xml:space="preserve">
<value>Ausblenden</value>
</data>
<data name="Settings_Section_InactivityHide" xml:space="preserve">
<value>Bei Inaktivität ausblenden</value>
</data>
<data name="Settings_Section_Frame" xml:space="preserve">
<value>Rahmen</value>
</data>
<data name="Settings_Section_Tab_Channels" xml:space="preserve">
<value>Kanäle</value>
</data>
<data name="Settings_Section_Tab_Display" xml:space="preserve">
<value>Anzeige</value>
</data>
<data name="Settings_Section_Tab_Notification" xml:space="preserve">
<value>Benachrichtigung</value>
</data>
<data name="Settings_Section_Tab_Input" xml:space="preserve">
<value>Eingabe</value>
</data>
<data name="Settings_Section_Tab_PopOut" xml:space="preserve">
<value>Pop-Out-Fenster</value>
</data>
<data name="Settings_Section_Tab_Volume_AllTabsHint" xml:space="preserve">
<value>Diese Lautstärke gilt für alle Tabs.</value>
</data>
<data name="Settings_Section_PrivacyFilter" xml:space="preserve">
<value>Datenschutz-Filter</value>
</data>
<data name="Settings_Section_Storage" xml:space="preserve">
<value>Speicherung</value>
</data>
<data name="Settings_Section_Retention" xml:space="preserve">
<value>Aufbewahrung</value>
</data>
<data name="Settings_Section_Cleanup" xml:space="preserve">
<value>Aufräumen</value>
</data>
<data name="Settings_Section_Export" xml:space="preserve">
<value>Export</value>
</data>
<data name="Settings_Section_Database" xml:space="preserve">
<value>Datenbank</value>
</data>
<data name="Settings_Section_Extensions" xml:space="preserve">
<value>Erweiterungen</value>
</data>
<data name="Settings_Section_PluginInfo" xml:space="preserve">
<value>Plugin-Info</value>
</data>
<data name="Settings_Section_Project" xml:space="preserve">
<value>Das Projekt</value>
</data>
<data name="Settings_Section_Translators" xml:space="preserve">
<value>Übersetzer</value>
</data>
<data name="Settings_Section_Changelog" xml:space="preserve">
<value>Änderungsprotokoll</value>
</data>
<data name="Settings_Chat_NotifyFailedTell_Name" xml:space="preserve">
<value>Benachrichtigung bei fehlgeschlagenem Tell</value>
</data>
<data name="Settings_Chat_NotifyFailedTell_Description" xml:space="preserve">
<value>Zeigt eine Toast-Meldung an, wenn ein von dir gesendeter Tell nicht zugestellt werden konnte (Empfänger offline, in einer Instanz oder hat dich blockiert).</value>
</data>
<data name="Settings_Chat_NotifyPluginDisclosure_Name" xml:space="preserve">
<value>Warnung vor dem Senden plugin-exklusiver Symbole</value>
</data>
<data name="Settings_Chat_NotifyPluginDisclosure_Description" xml:space="preserve">
<value>Zeigt eine Warnung an, wenn eine Nachricht plugin-exklusive Symbole enthält, die für Spieler ohne HellionChat oder ein ähnliches Plugin als leere Kästchen erscheinen.</value>
</data>
<data name="Settings_Chat_WorldSuffix_Name" xml:space="preserve">
<value>Welt-Suffix</value>
</data>
<data name="Settings_Chat_WorldSuffix_Description" xml:space="preserve">
<value>Wann der Heimatwelt-Name an den Absendernamen im Chat-Protokoll angehängt wird.</value>
</data>
<data name="Settings_Chat_NameForm_Name" xml:space="preserve">
<value>Namensformat</value>
</data>
<data name="Settings_Chat_NameForm_Description" xml:space="preserve">
<value>Wie Absendernamen im Chat-Protokoll angezeigt werden. Der vollständige Name ist der Standard.</value>
</data>
<data name="NameDisplay_WorldSuffix_Never" xml:space="preserve">
<value>Nie</value>
</data>
<data name="NameDisplay_WorldSuffix_OtherWorldOnly" xml:space="preserve">
<value>Nur andere Welten</value>
</data>
<data name="NameDisplay_WorldSuffix_Always" xml:space="preserve">
<value>Immer</value>
</data>
<data name="NameDisplay_NameForm_Full" xml:space="preserve">
<value>Vollständiger Name</value>
</data>
<data name="NameDisplay_NameForm_FirstNameOnly" xml:space="preserve">
<value>Nur Vorname</value>
</data>
<data name="NameDisplay_NameForm_Initials" xml:space="preserve">
<value>Initialen</value>
</data>
<data name="Settings_General_CustomSoundVolume_Name" xml:space="preserve">
<value>Eigene Lautstärke</value>
</data>
<data name="Settings_General_CustomSoundVolume_Description" xml:space="preserve">
<value>Wiedergabelautstärke für die drei mitgelieferten eigenen Benachrichtigungstöne. Beeinflusst nicht die 16 Spielsounds.</value>
</data>
<data name="Settings_ThemeAndLayout_WindowOpacityInactive_Name" xml:space="preserve">
<value>Inaktive Fenster-Deckkraft</value>
</data>
<data name="Settings_ThemeAndLayout_WindowOpacityInactive_Description" xml:space="preserve">
<value>Hintergrund-Deckkraft des Haupt-Chat-Fensters, wenn es nicht im Fokus ist. Der Regler darüber legt den Wert im Fokus fest. Eine fensterbasierte Überschreibung im Dalamud-Pinning-Menü hat Vorrang vor beiden Werten.</value>
</data>
<data name="Tabs_NotificationSound_Enable_Name" xml:space="preserve">
<value>Benachrichtigungston</value>
</data>
<data name="Tabs_NotificationSound_Description" xml:space="preserve">
<value>Spielt einen Ton ab, wenn eine Nachricht in diesem Tab eintrifft, während du einen anderen Tab anschaust. Respektiert den globalen Sound-Schalter.</value>
</data>
<data name="Tabs_NotificationSound_Option" xml:space="preserve">
<value>Sound</value>
</data>
<data name="Tabs_NotificationSound_Preview" xml:space="preserve">
<value>Vorschau des ausgewählten Sounds</value>
</data>
<data name="Tabs_NotificationSound_CustomOption" xml:space="preserve">
<value>Hellion-Sound</value>
</data>
<data name="FailedTell_Notification_Generic" xml:space="preserve">
<value>Ein Tell konnte nicht zugestellt werden.</value>
</data>
<data name="FailedTell_Notification_Named" xml:space="preserve">
<value>Tell an {0} konnte nicht zugestellt werden.</value>
</data>
<data name="ChatInput_PluginDisclosure_Warning" xml:space="preserve">
<value>Diese Nachricht enthält plugin-exklusive Symbole, die andere Spieler als leere Kästchen sehen könnten. Drücke Enter erneut, um sie trotzdem zu senden.</value>
</data>
</root>
+195 -103
View File
@@ -12,9 +12,6 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Privacy_Tab_Title" xml:space="preserve">
<value>Απόρρητο</value>
</data>
<data name="Privacy_FilterEnabled_Name" xml:space="preserve">
<value>Ενεργοποίηση φίλτρου απορρήτου</value>
</data>
@@ -24,9 +21,6 @@
<data name="Privacy_FilterEnabled_StorageOnly_Help" xml:space="preserve">
<value>Το φίλτρο ελέγχει μόνο τι αποθηκεύεται στη βάση δεδομένων. Το chat log εξακολουθεί να εμφανίζει κάθε μήνυμα ζωντανά. Τα εξαιρεμένα κανάλια απλώς δεν αποθηκεύονται πλέον. Αν θέλεις να αφαιρέσεις κανάλια και από την ορατή εμφάνιση, χρησιμοποίησε τα κανονικά φίλτρα καρτελών chat στο παιχνίδι.</value>
</data>
<data name="Privacy_Filter_Tree_Heading" xml:space="preserve">
<value>Φίλτρο απορρήτου και whitelist</value>
</data>
<data name="Privacy_Whitelist_Help" xml:space="preserve">
<value>Επίλεξε ποια κανάλια αποθηκεύονται στη βάση δεδομένων. Η προεπιλογή ακολουθεί την αρχή ελαχιστοποίησης δεδομένων: μόνο οι δικές σου συνομιλίες. Χρησιμοποίησε τα παρακάτω κουμπιά για να εφαρμόσεις κάποια προρύθμιση.</value>
</data>
@@ -597,18 +591,6 @@
</data>
<!-- Hellion Chat — General tab section headings -->
<data name="Settings_General_Input_Heading" xml:space="preserve">
<value>Εισαγωγή</value>
</data>
<data name="Settings_General_Audio_Heading" xml:space="preserve">
<value>Ήχος &amp; ειδοποιήσεις</value>
</data>
<data name="Settings_General_Performance_Heading" xml:space="preserve">
<value>Απόδοση</value>
</data>
<data name="Settings_General_Language_Heading" xml:space="preserve">
<value>Γλώσσα &amp; βοηθήματα εισαγωγής</value>
</data>
<!-- Hellion Chat — Appearance tab section headings -->
<data name="Settings_Appearance_Theme_Heading" xml:space="preserve">
@@ -625,32 +607,11 @@
</data>
<!-- Hellion Chat — Window tab section headings -->
<data name="Settings_Window_Hide_Heading" xml:space="preserve">
<value>Απόκρυψη</value>
</data>
<data name="Settings_Window_InactivityHide_Heading" xml:space="preserve">
<value>Απόκρυψη λόγω αδράνειας</value>
</data>
<data name="Settings_Window_Frame_Heading" xml:space="preserve">
<value>Πλαίσιο παραθύρου</value>
</data>
<data name="Settings_Window_Tooltips_Heading" xml:space="preserve">
<value>Tooltips</value>
</data>
<!-- Hellion Chat — Chat tab section headings -->
<data name="Settings_Chat_AutoTellTabs_Heading" xml:space="preserve">
<value>Auto-Tell-Tabs</value>
</data>
<data name="Settings_Chat_Behaviour_Heading" xml:space="preserve">
<value>Συμπεριφορά μηνύματος</value>
</data>
<data name="Settings_Chat_Preview_Heading" xml:space="preserve">
<value>Προεπισκόπηση</value>
</data>
<data name="Settings_Chat_Emotes_Heading" xml:space="preserve">
<value>Emotes</value>
</data>
<!-- Hellion Chat — Chat tab SymbolPicker -->
<data name="Settings_Chat_SymbolPicker_Enable_Name" xml:space="preserve">
@@ -672,15 +633,6 @@
</data>
<!-- Hellion Chat — Information tab section headings -->
<data name="Settings_Information_VersionInfo_Heading" xml:space="preserve">
<value>Πληροφορίες έκδοσης</value>
</data>
<data name="Settings_Information_About_Heading" xml:space="preserve">
<value>Σχετικά με το HellionChat</value>
</data>
<data name="Settings_Information_Changelog_Heading" xml:space="preserve">
<value>Changelog</value>
</data>
<!-- Hellion Chat — Default tab presets (channel-specific) -->
<data name="Tabs_Presets_System" xml:space="preserve">
@@ -811,12 +763,6 @@
<data name="Settings_Card_Tabs_Subtext" xml:space="preserve">
<value>Δημιουργία και ρύθμιση προσαρμοσμένων καρτελών chat.</value>
</data>
<data name="Settings_Card_Privacy_Title" xml:space="preserve">
<value>Απόρρητο</value>
</data>
<data name="Settings_Card_Privacy_Subtext" xml:space="preserve">
<value>Φίλτρο απορρήτου ανά κανάλι και τι επιτρέπεται να αποθηκεύεται.</value>
</data>
<data name="Settings_Card_Database_Title" xml:space="preserve">
<value>Βάση δεδομένων</value>
</data>
@@ -824,10 +770,10 @@
<value>Αποθήκευση, μετεγκατάσταση, παλαιό cleanup</value>
</data>
<data name="Settings_Card_Information_Title" xml:space="preserve">
<value>Πληροφορίες</value>
<value>Σχετικά</value>
</data>
<data name="Settings_Card_Information_Subtext" xml:space="preserve">
<value>Έκδοση, αποστολή, άδεια και changelog.</value>
<value>Επεκτάσεις, έκδοση, πληροφορίες έργου, μεταφραστές και changelog.</value>
</data>
<data name="Settings_Tab_Themes" xml:space="preserve">
<value>Themes</value>
@@ -868,29 +814,11 @@
<data name="Appearance_UseCompactDensity_Description" xml:space="preserve">
<value>Εναλλάσσει τη διάταξη μηνυμάτων από την προεπιλογή card-row πίσω στις μονόγραμμες σειρές `[HH:mm] Sender: Text`.</value>
</data>
<data name="Settings_Card_ThemeAndLayout_Title" xml:space="preserve">
<value>Theme &amp; Layout</value>
</data>
<data name="Settings_Card_ThemeAndLayout_Subtext" xml:space="preserve">
<value>Theme, πλαίσιο παραθύρου και στυλ χρονοσφραγίδας.</value>
</data>
<data name="Settings_Card_FontsAndColours_Title" xml:space="preserve">
<value>Γραμματοσειρές &amp; Χρώματα</value>
</data>
<data name="Settings_Card_FontsAndColours_Subtext" xml:space="preserve">
<value>Γραμματοσειρά, μέγεθος και χρώματα chat ανά κανάλι.</value>
</data>
<data name="Settings_Card_DataManagement_Title" xml:space="preserve">
<value>Διαχείριση δεδομένων</value>
<value>Δεδομένα και απόρρητο</value>
</data>
<data name="Settings_Card_DataManagement_Subtext" xml:space="preserve">
<value>Διατήρηση, cleanup, εξαγωγή και στατιστικά βάσης δεδομένων.</value>
</data>
<data name="Settings_Card_Integrations_Title" xml:space="preserve">
<value>Ενσωματώσεις</value>
</data>
<data name="Settings_Card_Integrations_Subtext" xml:space="preserve">
<value>Άλλα Dalamud plugins με τα οποία συνεργάζεται το HellionChat. Επερχόμενες ενσωματώσεις σε προεπισκόπηση.</value>
<value>Φίλτρο απορρήτου, διατήρηση, cleanup, εξαγωγή και στατιστικά βάσης δεδομένων.</value>
</data>
<data name="Settings_ThemeAndLayout_Theme_Heading" xml:space="preserve">
<value>Theme</value>
@@ -907,39 +835,12 @@
<data name="Settings_ThemeAndLayout_WindowOpacity_Description" xml:space="preserve">
<value>Πόσο διαφανές είναι το φόντο του παραθύρου. Χαμηλότερες τιμές αφήνουν περισσότερο από το παιχνίδι να φαίνεται. Συμβουλή: το μενού Dalamud ανά παράθυρο (hamburger στη γραμμή τίτλου) προσφέρει ατομικές παρακάμψεις για αδιαφάνεια, θόλωση φόντου, click-through και καρφίτσωμα. Αυτές έχουν προτεραιότητα έναντι αυτού του slider για το αντίστοιχο παράθυρο.</value>
</data>
<data name="Settings_FontsAndColours_Fonts_Heading" xml:space="preserve">
<value>Γραμματοσειρές</value>
</data>
<data name="Settings_FontsAndColours_Colours_Heading" xml:space="preserve">
<value>Χρώματα chat</value>
</data>
<data name="Settings_DataManagement_Storage_Heading" xml:space="preserve">
<value>Αποθήκευση</value>
</data>
<data name="Settings_DataManagement_Retention_Heading" xml:space="preserve">
<value>Διατήρηση</value>
</data>
<data name="Settings_DataManagement_Cleanup_Heading" xml:space="preserve">
<value>Cleanup</value>
</data>
<data name="Settings_DataManagement_Export_Heading" xml:space="preserve">
<value>Εξαγωγή</value>
</data>
<data name="Settings_DataManagement_DbViewer_Heading" xml:space="preserve">
<value>Viewer βάσης δεδομένων</value>
</data>
<data name="Settings_DataManagement_Advanced_Heading" xml:space="preserve">
<value>Για προχωρημένους (Shift+κλικ για άνοιγμα)</value>
</data>
<data name="Settings_Window_Frame_Behaviour_Heading" xml:space="preserve">
<value>Συμπεριφορά</value>
</data>
<data name="Migration_v16_OverrideStyle_Toast" xml:space="preserve">
<value>Το Hellion Chat 1.2.1 αναδιοργάνωσε το μενού ρυθμίσεων και αφαίρεσε την παλιά επιλογή "Override style" (αντικαταστάθηκε από το σύστημα themes από την έκδοση 1.1.0). Οι υπόλοιπες ρυθμίσεις σου παραμένουν αναλλοίωτες. Η διαφάνεια παραθύρου έχει μεταφερθεί στο "Theme &amp; Layout". Αντίγραφο ασφαλείας της προηγούμενης διαμόρφωσης βρίσκεται στο pluginConfigs/HellionChat.json.pre-v16-backup δίπλα στο ενεργό HellionChat.json.</value>
</data>
<data name="Settings_Tab_Integrations" xml:space="preserve">
<value>Ενσωματώσεις</value>
</data>
<data name="Settings_Integrations_Intro" xml:space="preserve">
<value>Οι ενσωματώσεις plugin επιτρέπουν στο HellionChat να συνεργάζεται με άλλα εγκατεστημένα Dalamud plugins. Κάθε ενσωμάτωση ανιχνεύει αυτόματα τον στόχο της και απενεργοποιείται σιωπηλά όταν το plugin-στόχος λείπει.</value>
</data>
@@ -1053,4 +954,195 @@
<value>Απενεργοποιεί τη σταδιακή εναλλαγή θεμάτων, τα εφέ αιώρησης στην πλαϊνή μπάρα και τις κάρτες, και την παλμική ένδειξη μη αναγνωσμένων καρτελών. Οι αλλαγές θέματος και οι καταστάσεις αιώρησης εφαρμόζονται άμεσα.</value>
<comment>AI-assisted machine translation. Pending native-speaker review.</comment>
</data>
<!-- Hellion Chat — Settings Overhaul section titles (v1.5.6) -->
<data name="Settings_Section_Input" xml:space="preserve">
<value>Εισαγωγή</value>
</data>
<data name="Settings_Section_Sound" xml:space="preserve">
<value>Ήχος</value>
</data>
<data name="Settings_Section_Language" xml:space="preserve">
<value>Γλώσσα</value>
</data>
<data name="Settings_Section_Performance" xml:space="preserve">
<value>Απόδοση</value>
</data>
<data name="Settings_Section_Sound_TabsHint" xml:space="preserve">
<value>Ο ήχος που αναπαράγεται ανά καρτέλα ορίζεται στην καρτέλα Κανάλια.</value>
</data>
<data name="Settings_Section_Theme" xml:space="preserve">
<value>Θέμα</value>
</data>
<data name="Settings_Section_Fonts" xml:space="preserve">
<value>Γραμματοσειρές</value>
</data>
<data name="Settings_Section_Colours" xml:space="preserve">
<value>Χρώματα</value>
</data>
<data name="Settings_Section_WindowStyle" xml:space="preserve">
<value>Στυλ παραθύρου</value>
</data>
<data name="Settings_Section_Timestamps" xml:space="preserve">
<value>Χρονοσημάνσεις</value>
</data>
<data name="Settings_Section_Animations" xml:space="preserve">
<value>Κινούμενα σχέδια</value>
</data>
<data name="Settings_Section_Messages" xml:space="preserve">
<value>Μηνύματα</value>
</data>
<data name="Settings_Section_InputPreview" xml:space="preserve">
<value>Εισαγωγή &amp; προεπισκόπηση</value>
</data>
<data name="Settings_Section_AutoTellTabs" xml:space="preserve">
<value>Αυτόματες καρτέλες tell</value>
</data>
<data name="Settings_Section_Emotes" xml:space="preserve">
<value>Εκφράσεις</value>
</data>
<data name="Settings_Section_LinksTooltips" xml:space="preserve">
<value>Σύνδεσμοι &amp; επεξηγήσεις</value>
</data>
<data name="Settings_Section_NoviceNetwork" xml:space="preserve">
<value>Δίκτυο αρχαρίων</value>
</data>
<data name="Settings_Section_Hide" xml:space="preserve">
<value>Απόκρυψη</value>
</data>
<data name="Settings_Section_InactivityHide" xml:space="preserve">
<value>Απόκρυψη κατά την αδράνεια</value>
</data>
<data name="Settings_Section_Frame" xml:space="preserve">
<value>Πλαίσιο</value>
</data>
<data name="Settings_Section_Tab_Channels" xml:space="preserve">
<value>Κανάλια</value>
</data>
<data name="Settings_Section_Tab_Display" xml:space="preserve">
<value>Εμφάνιση</value>
</data>
<data name="Settings_Section_Tab_Notification" xml:space="preserve">
<value>Ειδοποίηση</value>
</data>
<data name="Settings_Section_Tab_Input" xml:space="preserve">
<value>Εισαγωγή</value>
</data>
<data name="Settings_Section_Tab_PopOut" xml:space="preserve">
<value>Αναδυόμενο παράθυρο</value>
</data>
<data name="Settings_Section_Tab_Volume_AllTabsHint" xml:space="preserve">
<value>Αυτή η ένταση ισχύει για όλες τις καρτέλες.</value>
</data>
<data name="Settings_Section_PrivacyFilter" xml:space="preserve">
<value>Φίλτρο απορρήτου</value>
</data>
<data name="Settings_Section_Storage" xml:space="preserve">
<value>Αποθήκευση</value>
</data>
<data name="Settings_Section_Retention" xml:space="preserve">
<value>Διατήρηση</value>
</data>
<data name="Settings_Section_Cleanup" xml:space="preserve">
<value>Εκκαθάριση</value>
</data>
<data name="Settings_Section_Export" xml:space="preserve">
<value>Εξαγωγή</value>
</data>
<data name="Settings_Section_Database" xml:space="preserve">
<value>Βάση δεδομένων</value>
</data>
<data name="Settings_Section_Extensions" xml:space="preserve">
<value>Επεκτάσεις</value>
</data>
<data name="Settings_Section_PluginInfo" xml:space="preserve">
<value>Πληροφορίες πρόσθετου</value>
</data>
<data name="Settings_Section_Project" xml:space="preserve">
<value>Το Έργο</value>
</data>
<data name="Settings_Section_Translators" xml:space="preserve">
<value>Μεταφραστές</value>
</data>
<data name="Settings_Section_Changelog" xml:space="preserve">
<value>Αρχείο αλλαγών</value>
</data>
<data name="Settings_Chat_NotifyFailedTell_Name" xml:space="preserve">
<value>Ειδοποίηση για αποτυχημένο tell</value>
</data>
<data name="Settings_Chat_NotifyFailedTell_Description" xml:space="preserve">
<value>Εμφανίζει ειδοποίηση όταν ένα tell που έστειλες δεν μπόρεσε να παραδοθεί (ο παραλήπτης είναι εκτός σύνδεσης, σε instance ή σε έχει αποκλείσει).</value>
</data>
<data name="Settings_Chat_NotifyPluginDisclosure_Name" xml:space="preserve">
<value>Προειδοποίηση πριν αποστολή συμβόλων plugin</value>
</data>
<data name="Settings_Chat_NotifyPluginDisclosure_Description" xml:space="preserve">
<value>Εμφανίζει προειδοποίηση όταν έν μήνυμα που πρόκειται να στείλεις περιέχει σύμβολα που εμφανίζονται σωστά μόνο για παίκτες με HellionChat ή παρόμοιο plugin.</value>
</data>
<data name="Settings_Chat_WorldSuffix_Name" xml:space="preserve">
<value>Επίθημα κόσμου</value>
</data>
<data name="Settings_Chat_WorldSuffix_Description" xml:space="preserve">
<value>Πότε να προστεθεί ο αρχικός κόσμος στο όνομα του αποστολέα στο αρχείο καταγραφής chat.</value>
</data>
<data name="Settings_Chat_NameForm_Name" xml:space="preserve">
<value>Μορφή ονόματος</value>
</data>
<data name="Settings_Chat_NameForm_Description" xml:space="preserve">
<value>Πώς εφανίζονται τα ονόματα αποστολέων στο αρχείο καταγραφής chat. Το πλήρες όνομα είναι η προεπιλογή.</value>
</data>
<data name="NameDisplay_WorldSuffix_Never" xml:space="preserve">
<value>Ποτέ</value>
</data>
<data name="NameDisplay_WorldSuffix_OtherWorldOnly" xml:space="preserve">
<value>Μόνο άλλοι κόσμοι</value>
</data>
<data name="NameDisplay_WorldSuffix_Always" xml:space="preserve">
<value>Πάντα</value>
</data>
<data name="NameDisplay_NameForm_Full" xml:space="preserve">
<value>Πλήρες όνομα</value>
</data>
<data name="NameDisplay_NameForm_FirstNameOnly" xml:space="preserve">
<value>Μόνο μικρό όνομα</value>
</data>
<data name="NameDisplay_NameForm_Initials" xml:space="preserve">
<value>Αρχικά</value>
</data>
<data name="Settings_General_CustomSoundVolume_Name" xml:space="preserve">
<value>Προσαρμοσμένη ένταση ήχου</value>
</data>
<data name="Settings_General_CustomSoundVolume_Description" xml:space="preserve">
<value>Ένταση αναπαραγωγής για τους τρεις ενσωματωμένους προσαρμοσμένους ήχους ειδοποίησης. Δεν επηρεάζει τους 16 ήχους παιχνιδιού.</value>
</data>
<data name="Settings_ThemeAndLayout_WindowOpacityInactive_Name" xml:space="preserve">
<value>Αδιαφάνεια ανενεργού παραθύρου</value>
</data>
<data name="Settings_ThemeAndLayout_WindowOpacityInactive_Description" xml:space="preserve">
<value>Αδιαφάνεια φόντου του κύριου παραθύρου chat όταν δεν είναι εστιασμένο. Το ρυθμιστικό από πάνω ορίζει την τιμή για εστιασμένο παράθυρο. Η παράκαμψη ανά παράθυρο στο μενού καρφιτσώματος του Dalamud έχει προτεραιότητα.</value>
</data>
<data name="Tabs_NotificationSound_Enable_Name" xml:space="preserve">
<value>Ήχος ειδοποίησης</value>
</data>
<data name="Tabs_NotificationSound_Description" xml:space="preserve">
<value>Αναπαράγει ήχο όταν φτάνει μήνυμα σε αυτή την καρτέλα ενώ κοιτάς άλλη καρτέλα. Σέβεται τον καθολικό διακόπτη ήχου.</value>
</data>
<data name="Tabs_NotificationSound_Option" xml:space="preserve">
<value>Ήχος</value>
</data>
<data name="Tabs_NotificationSound_Preview" xml:space="preserve">
<value>Προεπισκόπηση επιλεγμένου ήχου</value>
</data>
<data name="Tabs_NotificationSound_CustomOption" xml:space="preserve">
<value>Ήχος Hellion</value>
</data>
<data name="FailedTell_Notification_Generic" xml:space="preserve">
<value>Ένα tell δεν μπόρεσε να παραδοθεί.</value>
</data>
<data name="FailedTell_Notification_Named" xml:space="preserve">
<value>Το tell προς {0} δεν μπόρεσε να παραδοθεί.</value>
</data>
<data name="ChatInput_PluginDisclosure_Warning" xml:space="preserve">
<value>Αυτό το μήνυμα περιέχει σύμβολα plugin που άλλοι παίκτες μπορεί να βλέπουν ως κενά κουτιά. Πιέστε Enter ξανά για αποστολή.</value>
</data>
</root>
+195 -103
View File
@@ -12,9 +12,6 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Privacy_Tab_Title" xml:space="preserve">
<value>Privacidad</value>
</data>
<data name="Privacy_FilterEnabled_Name" xml:space="preserve">
<value>Activar filtro de privacidad</value>
</data>
@@ -24,9 +21,6 @@
<data name="Privacy_FilterEnabled_StorageOnly_Help" xml:space="preserve">
<value>El filtro solo controla qué se escribe en la base de datos local. El registro de chat sigue mostrando cada mensaje en tiempo real; los canales excluidos simplemente dejan de almacenarse. Si también quieres quitar canales de la vista, usa los filtros de pestañas de chat normales del juego.</value>
</data>
<data name="Privacy_Filter_Tree_Heading" xml:space="preserve">
<value>Filtro de privacidad y lista blanca</value>
</data>
<data name="Privacy_Whitelist_Help" xml:space="preserve">
<value>Elige qué canales se guardan en la base de datos local. El valor predeterminado sigue la minimización de datos: solo tus propias conversaciones. Usa los botones de abajo para aplicar una configuración predefinida.</value>
</data>
@@ -597,18 +591,6 @@
</data>
<!-- Hellion Chat — General tab section headings -->
<data name="Settings_General_Input_Heading" xml:space="preserve">
<value>Entrada</value>
</data>
<data name="Settings_General_Audio_Heading" xml:space="preserve">
<value>Audio &amp; notificaciones</value>
</data>
<data name="Settings_General_Performance_Heading" xml:space="preserve">
<value>Rendimiento</value>
</data>
<data name="Settings_General_Language_Heading" xml:space="preserve">
<value>Idioma &amp; ayudas de entrada</value>
</data>
<!-- Hellion Chat — Appearance tab section headings -->
<data name="Settings_Appearance_Theme_Heading" xml:space="preserve">
@@ -625,32 +607,11 @@
</data>
<!-- Hellion Chat — Window tab section headings -->
<data name="Settings_Window_Hide_Heading" xml:space="preserve">
<value>Ocultar</value>
</data>
<data name="Settings_Window_InactivityHide_Heading" xml:space="preserve">
<value>Ocultar por inactividad</value>
</data>
<data name="Settings_Window_Frame_Heading" xml:space="preserve">
<value>Marco de ventana</value>
</data>
<data name="Settings_Window_Tooltips_Heading" xml:space="preserve">
<value>Tooltips</value>
</data>
<!-- Hellion Chat — Chat tab section headings -->
<data name="Settings_Chat_AutoTellTabs_Heading" xml:space="preserve">
<value>Auto-Tell-Tabs</value>
</data>
<data name="Settings_Chat_Behaviour_Heading" xml:space="preserve">
<value>Comportamiento de mensajes</value>
</data>
<data name="Settings_Chat_Preview_Heading" xml:space="preserve">
<value>Vista previa</value>
</data>
<data name="Settings_Chat_Emotes_Heading" xml:space="preserve">
<value>Emotes</value>
</data>
<!-- Hellion Chat — Chat tab SymbolPicker -->
<data name="Settings_Chat_SymbolPicker_Enable_Name" xml:space="preserve">
@@ -672,15 +633,6 @@
</data>
<!-- Hellion Chat — Information tab section headings -->
<data name="Settings_Information_VersionInfo_Heading" xml:space="preserve">
<value>Información de versión</value>
</data>
<data name="Settings_Information_About_Heading" xml:space="preserve">
<value>Acerca de HellionChat</value>
</data>
<data name="Settings_Information_Changelog_Heading" xml:space="preserve">
<value>Changelog</value>
</data>
<!-- Hellion Chat — Default tab presets (channel-specific) -->
<data name="Tabs_Presets_System" xml:space="preserve">
@@ -811,12 +763,6 @@
<data name="Settings_Card_Tabs_Subtext" xml:space="preserve">
<value>Crea y configura pestañas de chat personalizadas.</value>
</data>
<data name="Settings_Card_Privacy_Title" xml:space="preserve">
<value>Privacidad</value>
</data>
<data name="Settings_Card_Privacy_Subtext" xml:space="preserve">
<value>Filtro de privacidad por canal y qué puede almacenarse.</value>
</data>
<data name="Settings_Card_Database_Title" xml:space="preserve">
<value>Base de datos</value>
</data>
@@ -824,10 +770,10 @@
<value>Almacenamiento, migración, limpieza de datos antiguos</value>
</data>
<data name="Settings_Card_Information_Title" xml:space="preserve">
<value>Información</value>
<value>Acerca de</value>
</data>
<data name="Settings_Card_Information_Subtext" xml:space="preserve">
<value>Versión, misión, licencia y changelog.</value>
<value>Extensiones, versión, información del proyecto, traductores y changelog.</value>
</data>
<data name="Settings_Tab_Themes" xml:space="preserve">
<value>Themes</value>
@@ -868,29 +814,11 @@
<data name="Appearance_UseCompactDensity_Description" xml:space="preserve">
<value>Cambia el diseño de mensajes del valor predeterminado de filas en tarjeta a filas de una sola línea `[HH:mm] Remitente: Texto`.</value>
</data>
<data name="Settings_Card_ThemeAndLayout_Title" xml:space="preserve">
<value>Theme &amp; Layout</value>
</data>
<data name="Settings_Card_ThemeAndLayout_Subtext" xml:space="preserve">
<value>Theme, marco de ventana y estilo de marcas de tiempo.</value>
</data>
<data name="Settings_Card_FontsAndColours_Title" xml:space="preserve">
<value>Fuentes &amp; Colores</value>
</data>
<data name="Settings_Card_FontsAndColours_Subtext" xml:space="preserve">
<value>Fuente, tamaño de fuente y colores de chat por canal.</value>
</data>
<data name="Settings_Card_DataManagement_Title" xml:space="preserve">
<value>Gestión de datos</value>
<value>Datos y privacidad</value>
</data>
<data name="Settings_Card_DataManagement_Subtext" xml:space="preserve">
<value>Retención, limpieza, exportación y estadísticas de base de datos.</value>
</data>
<data name="Settings_Card_Integrations_Title" xml:space="preserve">
<value>Integraciones</value>
</data>
<data name="Settings_Card_Integrations_Subtext" xml:space="preserve">
<value>Otros plugins de Dalamud con los que trabaja HellionChat. Próximas integraciones en vista previa.</value>
<value>Filtro de privacidad, retención, limpieza, exportación y estadísticas de base de datos.</value>
</data>
<data name="Settings_ThemeAndLayout_Theme_Heading" xml:space="preserve">
<value>Theme</value>
@@ -907,39 +835,12 @@
<data name="Settings_ThemeAndLayout_WindowOpacity_Description" xml:space="preserve">
<value>Qué tan transparente es el fondo de la ventana. Valores más bajos dejan ver más del juego. Consejo: el menú por ventana de Dalamud (hamburguesa en la barra de título) ofrece ajustes individuales de opacidad, desenfoque de fondo, clic sin selección y fijado para cada ventana; esos tienen prioridad sobre este deslizador para la ventana correspondiente.</value>
</data>
<data name="Settings_FontsAndColours_Fonts_Heading" xml:space="preserve">
<value>Fuentes</value>
</data>
<data name="Settings_FontsAndColours_Colours_Heading" xml:space="preserve">
<value>Colores del chat</value>
</data>
<data name="Settings_DataManagement_Storage_Heading" xml:space="preserve">
<value>Almacenamiento</value>
</data>
<data name="Settings_DataManagement_Retention_Heading" xml:space="preserve">
<value>Retención</value>
</data>
<data name="Settings_DataManagement_Cleanup_Heading" xml:space="preserve">
<value>Limpieza</value>
</data>
<data name="Settings_DataManagement_Export_Heading" xml:space="preserve">
<value>Exportar</value>
</data>
<data name="Settings_DataManagement_DbViewer_Heading" xml:space="preserve">
<value>Visor de base de datos</value>
</data>
<data name="Settings_DataManagement_Advanced_Heading" xml:space="preserve">
<value>Avanzado (Mayús+clic para abrir)</value>
</data>
<data name="Settings_Window_Frame_Behaviour_Heading" xml:space="preserve">
<value>Comportamiento</value>
</data>
<data name="Migration_v16_OverrideStyle_Toast" xml:space="preserve">
<value>Hellion Chat 1.2.1 ha reorganizado el menú de ajustes y eliminado la antigua opción "Anular estilo" (reemplazada por el sistema de themes de la versión 1.1.0). El resto de tus ajustes no ha cambiado. La transparencia de ventana se ha migrado a "Theme &amp; Layout". Una copia de seguridad de la configuración anterior se encuentra en pluginConfigs/HellionChat.json.pre-v16-backup junto al HellionChat.json activo.</value>
</data>
<data name="Settings_Tab_Integrations" xml:space="preserve">
<value>Integraciones</value>
</data>
<data name="Settings_Integrations_Intro" xml:space="preserve">
<value>Las integraciones de plugins permiten que HellionChat trabaje junto con otros plugins de Dalamud instalados. Cada integración detecta automáticamente su objetivo y se desactiva silenciosamente cuando el plugin objetivo no está presente.</value>
</data>
@@ -1054,4 +955,195 @@
<value>Desactiva la transición de temas, las animaciones al pasar el cursor por la barra lateral y las tarjetas, y el parpadeo de pestañas no leídas. Los cambios de tema y los estados del cursor se aplican al instante.</value>
<comment>AI-assisted machine translation. Pending native-speaker review.</comment>
</data>
<!-- Hellion Chat — Settings Overhaul section titles (v1.5.6) -->
<data name="Settings_Section_Input" xml:space="preserve">
<value>Entrada</value>
</data>
<data name="Settings_Section_Sound" xml:space="preserve">
<value>Sonido</value>
</data>
<data name="Settings_Section_Language" xml:space="preserve">
<value>Idioma</value>
</data>
<data name="Settings_Section_Performance" xml:space="preserve">
<value>Rendimiento</value>
</data>
<data name="Settings_Section_Sound_TabsHint" xml:space="preserve">
<value>El sonido que se reproduce por pestaña se configura en la pestaña Canales.</value>
</data>
<data name="Settings_Section_Theme" xml:space="preserve">
<value>Tema</value>
</data>
<data name="Settings_Section_Fonts" xml:space="preserve">
<value>Fuentes</value>
</data>
<data name="Settings_Section_Colours" xml:space="preserve">
<value>Colores</value>
</data>
<data name="Settings_Section_WindowStyle" xml:space="preserve">
<value>Estilo de ventana</value>
</data>
<data name="Settings_Section_Timestamps" xml:space="preserve">
<value>Marcas de tiempo</value>
</data>
<data name="Settings_Section_Animations" xml:space="preserve">
<value>Animaciones</value>
</data>
<data name="Settings_Section_Messages" xml:space="preserve">
<value>Mensajes</value>
</data>
<data name="Settings_Section_InputPreview" xml:space="preserve">
<value>Entrada y vista previa</value>
</data>
<data name="Settings_Section_AutoTellTabs" xml:space="preserve">
<value>Pestañas de tell automático</value>
</data>
<data name="Settings_Section_Emotes" xml:space="preserve">
<value>Emotes</value>
</data>
<data name="Settings_Section_LinksTooltips" xml:space="preserve">
<value>Enlaces y sugerencias</value>
</data>
<data name="Settings_Section_NoviceNetwork" xml:space="preserve">
<value>Red de novatos</value>
</data>
<data name="Settings_Section_Hide" xml:space="preserve">
<value>Ocultar</value>
</data>
<data name="Settings_Section_InactivityHide" xml:space="preserve">
<value>Ocultar cuando esté inactivo</value>
</data>
<data name="Settings_Section_Frame" xml:space="preserve">
<value>Marco</value>
</data>
<data name="Settings_Section_Tab_Channels" xml:space="preserve">
<value>Canales</value>
</data>
<data name="Settings_Section_Tab_Display" xml:space="preserve">
<value>Visualización</value>
</data>
<data name="Settings_Section_Tab_Notification" xml:space="preserve">
<value>Notificación</value>
</data>
<data name="Settings_Section_Tab_Input" xml:space="preserve">
<value>Entrada</value>
</data>
<data name="Settings_Section_Tab_PopOut" xml:space="preserve">
<value>Ventana emergente</value>
</data>
<data name="Settings_Section_Tab_Volume_AllTabsHint" xml:space="preserve">
<value>Este volumen se aplica a todas las pestañas.</value>
</data>
<data name="Settings_Section_PrivacyFilter" xml:space="preserve">
<value>Filtro de privacidad</value>
</data>
<data name="Settings_Section_Storage" xml:space="preserve">
<value>Almacenamiento</value>
</data>
<data name="Settings_Section_Retention" xml:space="preserve">
<value>Retención</value>
</data>
<data name="Settings_Section_Cleanup" xml:space="preserve">
<value>Limpieza</value>
</data>
<data name="Settings_Section_Export" xml:space="preserve">
<value>Exportar</value>
</data>
<data name="Settings_Section_Database" xml:space="preserve">
<value>Base de datos</value>
</data>
<data name="Settings_Section_Extensions" xml:space="preserve">
<value>Extensiones</value>
</data>
<data name="Settings_Section_PluginInfo" xml:space="preserve">
<value>Información del plugin</value>
</data>
<data name="Settings_Section_Project" xml:space="preserve">
<value>El proyecto</value>
</data>
<data name="Settings_Section_Translators" xml:space="preserve">
<value>Traductores</value>
</data>
<data name="Settings_Section_Changelog" xml:space="preserve">
<value>Registro de cambios</value>
</data>
<data name="Settings_Chat_NotifyFailedTell_Name" xml:space="preserve">
<value>Notificar si el tell falla</value>
</data>
<data name="Settings_Chat_NotifyFailedTell_Description" xml:space="preserve">
<value>Muestra una notificación emergente cuando un tell que enviaste no pudo ser entregado (destinatario desconectado, en una instancia o bloqueándote).</value>
</data>
<data name="Settings_Chat_NotifyPluginDisclosure_Name" xml:space="preserve">
<value>Advertir antes de enviar símbolos exclusivos del plugin</value>
</data>
<data name="Settings_Chat_NotifyPluginDisclosure_Description" xml:space="preserve">
<value>Muestra una advertencia cuando un mensaje que estás a punto de enviar contiene símbolos que solo se muestran correctamente para jugadores con HellionChat o un plugin similar.</value>
</data>
<data name="Settings_Chat_WorldSuffix_Name" xml:space="preserve">
<value>Sufijo de mundo</value>
</data>
<data name="Settings_Chat_WorldSuffix_Description" xml:space="preserve">
<value>Cuándo añadir el mundo de origen al nombre del remitente en el registro de chat.</value>
</data>
<data name="Settings_Chat_NameForm_Name" xml:space="preserve">
<value>Formato de nombre</value>
</data>
<data name="Settings_Chat_NameForm_Description" xml:space="preserve">
<value>Cómo se muestran los nombres de los remitentes en el registro de chat. El nombre completo es el predeterminado.</value>
</data>
<data name="NameDisplay_WorldSuffix_Never" xml:space="preserve">
<value>Nunca</value>
</data>
<data name="NameDisplay_WorldSuffix_OtherWorldOnly" xml:space="preserve">
<value>Solo otros mundos</value>
</data>
<data name="NameDisplay_WorldSuffix_Always" xml:space="preserve">
<value>Siempre</value>
</data>
<data name="NameDisplay_NameForm_Full" xml:space="preserve">
<value>Nombre completo</value>
</data>
<data name="NameDisplay_NameForm_FirstNameOnly" xml:space="preserve">
<value>Solo nombre</value>
</data>
<data name="NameDisplay_NameForm_Initials" xml:space="preserve">
<value>Iniciales</value>
</data>
<data name="Settings_General_CustomSoundVolume_Name" xml:space="preserve">
<value>Volumen de sonido personalizado</value>
</data>
<data name="Settings_General_CustomSoundVolume_Description" xml:space="preserve">
<value>Volumen de reproducción de los tres sonidos de notificación personalizados incluidos. No afecta los 16 sonidos del juego.</value>
</data>
<data name="Settings_ThemeAndLayout_WindowOpacityInactive_Name" xml:space="preserve">
<value>Opacidad de ventana inactiva</value>
</data>
<data name="Settings_ThemeAndLayout_WindowOpacityInactive_Description" xml:space="preserve">
<value>Opacidad del fondo de la ventana de chat principal mientras no está enfocada. El control deslizante superior establece el valor enfocado. Una anulación por ventana en el menú de anclaje de Dalamud tiene prioridad sobre ambos.</value>
</data>
<data name="Tabs_NotificationSound_Enable_Name" xml:space="preserve">
<value>Sonido de notificación</value>
</data>
<data name="Tabs_NotificationSound_Description" xml:space="preserve">
<value>Reproduce un sonido cuando llega un mensaje a esta pestaña mientras ves otra pestaña. Respeta el interruptor de sonido global.</value>
</data>
<data name="Tabs_NotificationSound_Option" xml:space="preserve">
<value>Sonido</value>
</data>
<data name="Tabs_NotificationSound_Preview" xml:space="preserve">
<value>Vista previa del sonido seleccionado</value>
</data>
<data name="Tabs_NotificationSound_CustomOption" xml:space="preserve">
<value>Sonido Hellion</value>
</data>
<data name="FailedTell_Notification_Generic" xml:space="preserve">
<value>No se pudo entregar el tell.</value>
</data>
<data name="FailedTell_Notification_Named" xml:space="preserve">
<value>No se pudo entregar el tell a {0}.</value>
</data>
<data name="ChatInput_PluginDisclosure_Warning" xml:space="preserve">
<value>Este mensaje contiene símbolos exclusivos del plugin que otros jugadores pueden ver como cuadros vacíos. Presiona Intro de nuevo para enviarlo de todas formas.</value>
</data>
</root>
+194 -102
View File
@@ -12,9 +12,6 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Privacy_Tab_Title" xml:space="preserve">
<value>Tietosuoja</value>
</data>
<data name="Privacy_FilterEnabled_Name" xml:space="preserve">
<value>Ota tietosuojasuodatin käyttöön</value>
</data>
@@ -24,9 +21,6 @@
<data name="Privacy_FilterEnabled_StorageOnly_Help" xml:space="preserve">
<value>Suodatin hallitsee vain sitä, mitä kirjoitetaan paikalliseen tietokantaan. Chatin loki näyttää edelleen jokaisen viestin reaaliajassa; poissuljetut kanavat yksinkertaisesti lopettavat tallentumisen. Jos haluat myös poistaa kanavia näkyvästä näytöstä, käytä pelin normaaleja chat-välilehtisuodattimia.</value>
</data>
<data name="Privacy_Filter_Tree_Heading" xml:space="preserve">
<value>Tietosuojasuodatin ja sallittujen lista</value>
</data>
<data name="Privacy_Whitelist_Help" xml:space="preserve">
<value>Valitse, mitkä kanavat tallennetaan paikalliseen tietokantaan. Oletuksena tietojen minimointi: vain omat keskustelusi. Käytä alla olevia painikkeita esiasetuksen valitsemiseksi.</value>
</data>
@@ -597,18 +591,6 @@
</data>
<!-- Hellion Chat — General tab section headings -->
<data name="Settings_General_Input_Heading" xml:space="preserve">
<value>Syöte</value>
</data>
<data name="Settings_General_Audio_Heading" xml:space="preserve">
<value>Ääni &amp; ilmoitukset</value>
</data>
<data name="Settings_General_Performance_Heading" xml:space="preserve">
<value>Suorituskyky</value>
</data>
<data name="Settings_General_Language_Heading" xml:space="preserve">
<value>Kieli &amp; syöteapuvälineet</value>
</data>
<!-- Hellion Chat — Appearance tab section headings -->
<data name="Settings_Appearance_Theme_Heading" xml:space="preserve">
@@ -625,32 +607,11 @@
</data>
<!-- Hellion Chat — Window tab section headings -->
<data name="Settings_Window_Hide_Heading" xml:space="preserve">
<value>Piilottaminen</value>
</data>
<data name="Settings_Window_InactivityHide_Heading" xml:space="preserve">
<value>Piilottaminen käyttämättömyyden vuoksi</value>
</data>
<data name="Settings_Window_Frame_Heading" xml:space="preserve">
<value>Ikkunakehys</value>
</data>
<data name="Settings_Window_Tooltips_Heading" xml:space="preserve">
<value>Työkaluvihjeet</value>
</data>
<!-- Hellion Chat — Chat tab section headings -->
<data name="Settings_Chat_AutoTellTabs_Heading" xml:space="preserve">
<value>Auto-Tell-Tabs</value>
</data>
<data name="Settings_Chat_Behaviour_Heading" xml:space="preserve">
<value>Viestien toiminta</value>
</data>
<data name="Settings_Chat_Preview_Heading" xml:space="preserve">
<value>Esikatselu</value>
</data>
<data name="Settings_Chat_Emotes_Heading" xml:space="preserve">
<value>Emotet</value>
</data>
<!-- Hellion Chat — Chat tab SymbolPicker -->
<data name="Settings_Chat_SymbolPicker_Enable_Name" xml:space="preserve">
@@ -672,15 +633,6 @@
</data>
<!-- Hellion Chat — Information tab section headings -->
<data name="Settings_Information_VersionInfo_Heading" xml:space="preserve">
<value>Versiotiedot</value>
</data>
<data name="Settings_Information_About_Heading" xml:space="preserve">
<value>Tietoja HellionChatista</value>
</data>
<data name="Settings_Information_Changelog_Heading" xml:space="preserve">
<value>Changelog</value>
</data>
<!-- Hellion Chat — Default tab presets (channel-specific) -->
<data name="Tabs_Presets_System" xml:space="preserve">
@@ -811,12 +763,6 @@
<data name="Settings_Card_Tabs_Subtext" xml:space="preserve">
<value>Luo ja määritä mukautettuja chat-välilehtiä.</value>
</data>
<data name="Settings_Card_Privacy_Title" xml:space="preserve">
<value>Tietosuoja</value>
</data>
<data name="Settings_Card_Privacy_Subtext" xml:space="preserve">
<value>Tietosuojasuodatin kanavittain ja mitä saa tallentaa.</value>
</data>
<data name="Settings_Card_Database_Title" xml:space="preserve">
<value>Tietokanta</value>
</data>
@@ -827,7 +773,7 @@
<value>Tietoja</value>
</data>
<data name="Settings_Card_Information_Subtext" xml:space="preserve">
<value>Versio, missio, lisenssi ja changelog.</value>
<value>Laajennukset, versio, projektin tiedot, kääntäjät ja changelog.</value>
</data>
<data name="Settings_Tab_Themes" xml:space="preserve">
<value>Teemat</value>
@@ -868,29 +814,11 @@
<data name="Appearance_UseCompactDensity_Description" xml:space="preserve">
<value>Vaihtaa viestinasettelun korttirivioletuksesta takaisin yksirivisiin `[HH:mm] Lähettäjä: Teksti` -riveihin.</value>
</data>
<data name="Settings_Card_ThemeAndLayout_Title" xml:space="preserve">
<value>Teema &amp; asettelu</value>
</data>
<data name="Settings_Card_ThemeAndLayout_Subtext" xml:space="preserve">
<value>Teema, ikkunakehys ja aikaleimien tyyli.</value>
</data>
<data name="Settings_Card_FontsAndColours_Title" xml:space="preserve">
<value>Fontit &amp; värit</value>
</data>
<data name="Settings_Card_FontsAndColours_Subtext" xml:space="preserve">
<value>Fontti, fonttikoko ja chat-värit kanavittain.</value>
</data>
<data name="Settings_Card_DataManagement_Title" xml:space="preserve">
<value>Tiedonhallinta</value>
<value>Tiedot ja yksityisyys</value>
</data>
<data name="Settings_Card_DataManagement_Subtext" xml:space="preserve">
<value>Säilytys, siivous, vienti ja tietokantatilastot.</value>
</data>
<data name="Settings_Card_Integrations_Title" xml:space="preserve">
<value>Integraatiot</value>
</data>
<data name="Settings_Card_Integrations_Subtext" xml:space="preserve">
<value>Muut Dalamud-lisäosat, joiden kanssa HellionChat toimii yhteistyössä. Tulevat integraatiot esikatselussa.</value>
<value>Yksityisyyssuodatin, säilytys, siivous, vienti ja tietokantatilastot.</value>
</data>
<data name="Settings_ThemeAndLayout_Theme_Heading" xml:space="preserve">
<value>Teema</value>
@@ -907,39 +835,12 @@
<data name="Settings_ThemeAndLayout_WindowOpacity_Description" xml:space="preserve">
<value>Kuinka läpinäkyvä ikkunan tausta on. Pienemmät arvot näyttävät enemmän peliä läpi. Vinkki: Dalamud-ikkunakohtainen valikko (hampurilaisvalikko otsikkopalkissa) tarjoaa ikkunakohtaiset ohitukset läpinäkyvyydelle, taustan sumenteelle, läpinapsautukselle ja kiinnittämiselle: ne ohittavat tämän liukusäätimen kyseisessä ikkunassa.</value>
</data>
<data name="Settings_FontsAndColours_Fonts_Heading" xml:space="preserve">
<value>Fontit</value>
</data>
<data name="Settings_FontsAndColours_Colours_Heading" xml:space="preserve">
<value>Chat-värit</value>
</data>
<data name="Settings_DataManagement_Storage_Heading" xml:space="preserve">
<value>Tallennus</value>
</data>
<data name="Settings_DataManagement_Retention_Heading" xml:space="preserve">
<value>Säilytys</value>
</data>
<data name="Settings_DataManagement_Cleanup_Heading" xml:space="preserve">
<value>Siivous</value>
</data>
<data name="Settings_DataManagement_Export_Heading" xml:space="preserve">
<value>Vienti</value>
</data>
<data name="Settings_DataManagement_DbViewer_Heading" xml:space="preserve">
<value>Tietokantaselain</value>
</data>
<data name="Settings_DataManagement_Advanced_Heading" xml:space="preserve">
<value>Lisäasetukset (Shift+napsauta avataksesi)</value>
</data>
<data name="Settings_Window_Frame_Behaviour_Heading" xml:space="preserve">
<value>Toiminta</value>
</data>
<data name="Migration_v16_OverrideStyle_Toast" xml:space="preserve">
<value>Hellion Chat 1.2.1 on uudelleenjärjestänyt asetusvalikon ja poistanut vanhan "Ohita tyyli" -vaihtoehdon (korvattu versiossa 1.1.0 esitellyllä teemajärjestelmällä). Muut asetuksesi pysyvät muuttumattomina. Ikkunan läpinäkyvyys on siirretty kohtaan "Teema &amp; asettelu". Varmuuskopio aiemmasta asetustiedostosta löytyy nimellä pluginConfigs/HellionChat.json.pre-v16-backup aktiivisen HellionChat.json-tiedoston vierestä.</value>
</data>
<data name="Settings_Tab_Integrations" xml:space="preserve">
<value>Integraatiot</value>
</data>
<data name="Settings_Integrations_Intro" xml:space="preserve">
<value>Lisäosaintegraatiot mahdollistavat HellionChatin yhteistyön muiden asennettujen Dalamud-lisäosien kanssa. Jokainen integraatio tunnistaa kohteensa automaattisesti ja poistaa itsensä hiljaisesti käytöstä, kun kohdalisäosa puuttuu.</value>
</data>
@@ -1053,4 +954,195 @@
<value>Poistaa käytöstä teeman ristihäivytyksen, sivupalkin ja korttien osoitinanimaatiot sekä lukemattomien välilehtien sykkeen. Teeman vaihdot ja osoitintilat tulevat voimaan välittömästi.</value>
<comment>AI-assisted machine translation. Pending native-speaker review.</comment>
</data>
<!-- Hellion Chat — Settings Overhaul section titles (v1.5.6) -->
<data name="Settings_Section_Input" xml:space="preserve">
<value>Syöte</value>
</data>
<data name="Settings_Section_Sound" xml:space="preserve">
<value>Ääni</value>
</data>
<data name="Settings_Section_Language" xml:space="preserve">
<value>Kieli</value>
</data>
<data name="Settings_Section_Performance" xml:space="preserve">
<value>Suorituskyky</value>
</data>
<data name="Settings_Section_Sound_TabsHint" xml:space="preserve">
<value>Kullakin välilehdellä toistettava ääni määritetään Kanavat-välilehdellä.</value>
</data>
<data name="Settings_Section_Theme" xml:space="preserve">
<value>Teema</value>
</data>
<data name="Settings_Section_Fonts" xml:space="preserve">
<value>Fontit</value>
</data>
<data name="Settings_Section_Colours" xml:space="preserve">
<value>Värit</value>
</data>
<data name="Settings_Section_WindowStyle" xml:space="preserve">
<value>Ikkunatyyli</value>
</data>
<data name="Settings_Section_Timestamps" xml:space="preserve">
<value>Aikaleimat</value>
</data>
<data name="Settings_Section_Animations" xml:space="preserve">
<value>Animaatiot</value>
</data>
<data name="Settings_Section_Messages" xml:space="preserve">
<value>Viestit</value>
</data>
<data name="Settings_Section_InputPreview" xml:space="preserve">
<value>Syöte ja esikatselu</value>
</data>
<data name="Settings_Section_AutoTellTabs" xml:space="preserve">
<value>Automaattiset tell-välilehdet</value>
</data>
<data name="Settings_Section_Emotes" xml:space="preserve">
<value>Emotet</value>
</data>
<data name="Settings_Section_LinksTooltips" xml:space="preserve">
<value>Linkit ja työkaluvihjeet</value>
</data>
<data name="Settings_Section_NoviceNetwork" xml:space="preserve">
<value>Aloittelijaverkosto</value>
</data>
<data name="Settings_Section_Hide" xml:space="preserve">
<value>Piilota</value>
</data>
<data name="Settings_Section_InactivityHide" xml:space="preserve">
<value>Piilota käyttämättömänä</value>
</data>
<data name="Settings_Section_Frame" xml:space="preserve">
<value>Kehys</value>
</data>
<data name="Settings_Section_Tab_Channels" xml:space="preserve">
<value>Kanavat</value>
</data>
<data name="Settings_Section_Tab_Display" xml:space="preserve">
<value>Näyttö</value>
</data>
<data name="Settings_Section_Tab_Notification" xml:space="preserve">
<value>Ilmoitus</value>
</data>
<data name="Settings_Section_Tab_Input" xml:space="preserve">
<value>Syöte</value>
</data>
<data name="Settings_Section_Tab_PopOut" xml:space="preserve">
<value>Ponnahdusikkuna</value>
</data>
<data name="Settings_Section_Tab_Volume_AllTabsHint" xml:space="preserve">
<value>Tämä äänenvoimakkuus koskee kaikkia välilehtiä.</value>
</data>
<data name="Settings_Section_PrivacyFilter" xml:space="preserve">
<value>Yksityisyyssuodatin</value>
</data>
<data name="Settings_Section_Storage" xml:space="preserve">
<value>Tallennus</value>
</data>
<data name="Settings_Section_Retention" xml:space="preserve">
<value>Säilytys</value>
</data>
<data name="Settings_Section_Cleanup" xml:space="preserve">
<value>Siivous</value>
</data>
<data name="Settings_Section_Export" xml:space="preserve">
<value>Vie</value>
</data>
<data name="Settings_Section_Database" xml:space="preserve">
<value>Tietokanta</value>
</data>
<data name="Settings_Section_Extensions" xml:space="preserve">
<value>Laajennukset</value>
</data>
<data name="Settings_Section_PluginInfo" xml:space="preserve">
<value>Laajennuksen tiedot</value>
</data>
<data name="Settings_Section_Project" xml:space="preserve">
<value>Projekti</value>
</data>
<data name="Settings_Section_Translators" xml:space="preserve">
<value>Kääntäjät</value>
</data>
<data name="Settings_Section_Changelog" xml:space="preserve">
<value>Muutosloki</value>
</data>
<data name="Settings_Chat_NotifyFailedTell_Name" xml:space="preserve">
<value>Ilmoita epäonnistuneesta tellista</value>
</data>
<data name="Settings_Chat_NotifyFailedTell_Description" xml:space="preserve">
<value>Näyttää ilmoituksen, kun lähettämäsi tell ei voitu toimittaa (vastaanottaja offline, instanssissa tai on estänyt sinut).</value>
</data>
<data name="Settings_Chat_NotifyPluginDisclosure_Name" xml:space="preserve">
<value>Varoita ennen plugin-symbolien lähettämistä</value>
</data>
<data name="Settings_Chat_NotifyPluginDisclosure_Description" xml:space="preserve">
<value>Näyttää varoituksen, kun lähetettävä viesti sisältää symboleja, jotka näkyvät oikein vain HellionChat- tai vastaavaa plugin-käyttäville pelaajille.</value>
</data>
<data name="Settings_Chat_WorldSuffix_Name" xml:space="preserve">
<value>Maailman jälkiliite</value>
</data>
<data name="Settings_Chat_WorldSuffix_Description" xml:space="preserve">
<value>Milloin kotimailman nimi lisätään lähettäjän nimeen chat-lokissa.</value>
</data>
<data name="Settings_Chat_NameForm_Name" xml:space="preserve">
<value>Nimimuoto</value>
</data>
<data name="Settings_Chat_NameForm_Description" xml:space="preserve">
<value>Miten lähettäjien nimet näytetään chat-lokissa. Koko nimi on oletusasetus.</value>
</data>
<data name="NameDisplay_WorldSuffix_Never" xml:space="preserve">
<value>Ei koskaan</value>
</data>
<data name="NameDisplay_WorldSuffix_OtherWorldOnly" xml:space="preserve">
<value>Vain muut maailmat</value>
</data>
<data name="NameDisplay_WorldSuffix_Always" xml:space="preserve">
<value>Aina</value>
</data>
<data name="NameDisplay_NameForm_Full" xml:space="preserve">
<value>Koko nimi</value>
</data>
<data name="NameDisplay_NameForm_FirstNameOnly" xml:space="preserve">
<value>Vain etunimi</value>
</data>
<data name="NameDisplay_NameForm_Initials" xml:space="preserve">
<value>Nimikirjaimet</value>
</data>
<data name="Settings_General_CustomSoundVolume_Name" xml:space="preserve">
<value>Mukautettu äänenvoimakkuus</value>
</data>
<data name="Settings_General_CustomSoundVolume_Description" xml:space="preserve">
<value>Kolmen mukana toimitetun mukautetun ilmoitusäänen toistovoimakkuus. Ei vaikuta 16 pelisoundiin.</value>
</data>
<data name="Settings_ThemeAndLayout_WindowOpacityInactive_Name" xml:space="preserve">
<value>Passiivisen ikkunan läpinäkyvyys</value>
</data>
<data name="Settings_ThemeAndLayout_WindowOpacityInactive_Description" xml:space="preserve">
<value>Päächat-ikkunan taustan läpinäkyvyys, kun se ei ole aktiivinen. Yläpuolinen liukusäädin asettaa aktiivisen arvon. Dalamud-kiinnitysvalikon ikkunakohtainen ohitus ohittaa molemmat.</value>
</data>
<data name="Tabs_NotificationSound_Enable_Name" xml:space="preserve">
<value>Ilmoitusääni</value>
</data>
<data name="Tabs_NotificationSound_Description" xml:space="preserve">
<value>Toistaa äänen, kun välilehteen saapuu viesti, kun katsot toista välilehteä. Noudattaa globaalia äänivaihtajaa.</value>
</data>
<data name="Tabs_NotificationSound_Option" xml:space="preserve">
<value>Ääni</value>
</data>
<data name="Tabs_NotificationSound_Preview" xml:space="preserve">
<value>Esikatsele valittua ääntä</value>
</data>
<data name="Tabs_NotificationSound_CustomOption" xml:space="preserve">
<value>Hellion-ääni</value>
</data>
<data name="FailedTell_Notification_Generic" xml:space="preserve">
<value>Telliä ei voitu toimittaa.</value>
</data>
<data name="FailedTell_Notification_Named" xml:space="preserve">
<value>Telliä kohteelle {0} ei voitu toimittaa.</value>
</data>
<data name="ChatInput_PluginDisclosure_Warning" xml:space="preserve">
<value>Tämä viesti sisältää plugin-symboleja, jotka muut pelaajat saattavat nähdä tyhjinä ruutuina. Paina Enter uudelleen lähettääksesi joka tapauksessa.</value>
</data>
</root>
+195 -103
View File
@@ -12,9 +12,6 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Privacy_Tab_Title" xml:space="preserve">
<value>Confidentialité</value>
</data>
<data name="Privacy_FilterEnabled_Name" xml:space="preserve">
<value>Activer le filtre de confidentialité</value>
</data>
@@ -24,9 +21,6 @@
<data name="Privacy_FilterEnabled_StorageOnly_Help" xml:space="preserve">
<value>Le filtre contrôle uniquement ce qui est enregistré dans la base de données locale. Le journal de chat affiche toujours tous les messages en direct ; les canaux exclus ne sont simplement plus enregistrés. Si vous souhaitez également masquer des canaux de l'affichage visible, utilisez les filtres d'onglet de chat habituels du jeu.</value>
</data>
<data name="Privacy_Filter_Tree_Heading" xml:space="preserve">
<value>Filtre de confidentialité et liste blanche</value>
</data>
<data name="Privacy_Whitelist_Help" xml:space="preserve">
<value>Choisissez quels canaux sont enregistrés dans la base de données locale. Le réglage par défaut suit la minimisation des données : uniquement vos propres conversations. Utilisez les boutons ci-dessous pour appliquer un préréglage.</value>
</data>
@@ -597,18 +591,6 @@
</data>
<!-- Hellion Chat — General tab section headings -->
<data name="Settings_General_Input_Heading" xml:space="preserve">
<value>Saisie</value>
</data>
<data name="Settings_General_Audio_Heading" xml:space="preserve">
<value>Audio et notifications</value>
</data>
<data name="Settings_General_Performance_Heading" xml:space="preserve">
<value>Performance</value>
</data>
<data name="Settings_General_Language_Heading" xml:space="preserve">
<value>Langue et aides à la saisie</value>
</data>
<!-- Hellion Chat — Appearance tab section headings -->
<data name="Settings_Appearance_Theme_Heading" xml:space="preserve">
@@ -625,32 +607,11 @@
</data>
<!-- Hellion Chat — Window tab section headings -->
<data name="Settings_Window_Hide_Heading" xml:space="preserve">
<value>Masquage</value>
</data>
<data name="Settings_Window_InactivityHide_Heading" xml:space="preserve">
<value>Masquage en cas d'inactivité</value>
</data>
<data name="Settings_Window_Frame_Heading" xml:space="preserve">
<value>Cadre de la fenêtre</value>
</data>
<data name="Settings_Window_Tooltips_Heading" xml:space="preserve">
<value>Infobulles</value>
</data>
<!-- Hellion Chat — Chat tab section headings -->
<data name="Settings_Chat_AutoTellTabs_Heading" xml:space="preserve">
<value>Onglets de tell automatiques</value>
</data>
<data name="Settings_Chat_Behaviour_Heading" xml:space="preserve">
<value>Comportement des messages</value>
</data>
<data name="Settings_Chat_Preview_Heading" xml:space="preserve">
<value>Aperçu</value>
</data>
<data name="Settings_Chat_Emotes_Heading" xml:space="preserve">
<value>Emotes</value>
</data>
<!-- Hellion Chat — Chat tab SymbolPicker -->
<data name="Settings_Chat_SymbolPicker_Enable_Name" xml:space="preserve">
@@ -672,15 +633,6 @@
</data>
<!-- Hellion Chat — Information tab section headings -->
<data name="Settings_Information_VersionInfo_Heading" xml:space="preserve">
<value>Informations de version</value>
</data>
<data name="Settings_Information_About_Heading" xml:space="preserve">
<value>À propos de HellionChat</value>
</data>
<data name="Settings_Information_Changelog_Heading" xml:space="preserve">
<value>Journal des modifications</value>
</data>
<!-- Hellion Chat — Default tab presets (channel-specific) -->
<data name="Tabs_Presets_System" xml:space="preserve">
@@ -811,12 +763,6 @@
<data name="Settings_Card_Tabs_Subtext" xml:space="preserve">
<value>Créez et configurez des onglets de chat personnalisés.</value>
</data>
<data name="Settings_Card_Privacy_Title" xml:space="preserve">
<value>Confidentialité</value>
</data>
<data name="Settings_Card_Privacy_Subtext" xml:space="preserve">
<value>Filtre de confidentialité par canal et ce qui peut être enregistré.</value>
</data>
<data name="Settings_Card_Database_Title" xml:space="preserve">
<value>Base de données</value>
</data>
@@ -824,10 +770,10 @@
<value>Stockage, migration, nettoyage des données historiques</value>
</data>
<data name="Settings_Card_Information_Title" xml:space="preserve">
<value>Informations</value>
<value>À propos</value>
</data>
<data name="Settings_Card_Information_Subtext" xml:space="preserve">
<value>Version, mission, licence et journal des modifications.</value>
<value>Extensions, version, informations du projet, traducteurs et journal des modifications.</value>
</data>
<data name="Settings_Tab_Themes" xml:space="preserve">
<value>Thèmes</value>
@@ -868,29 +814,11 @@
<data name="Appearance_UseCompactDensity_Description" xml:space="preserve">
<value>Bascule la mise en page des messages de l'affichage par défaut en carte vers les lignes simples `[HH:mm] Expéditeur : Texte`.</value>
</data>
<data name="Settings_Card_ThemeAndLayout_Title" xml:space="preserve">
<value>Thème et mise en page</value>
</data>
<data name="Settings_Card_ThemeAndLayout_Subtext" xml:space="preserve">
<value>Thème, cadre de fenêtre et style d'horodatage.</value>
</data>
<data name="Settings_Card_FontsAndColours_Title" xml:space="preserve">
<value>Polices et couleurs</value>
</data>
<data name="Settings_Card_FontsAndColours_Subtext" xml:space="preserve">
<value>Police, taille de police et couleurs de chat par canal.</value>
</data>
<data name="Settings_Card_DataManagement_Title" xml:space="preserve">
<value>Gestion des données</value>
<value>Données et confidentialité</value>
</data>
<data name="Settings_Card_DataManagement_Subtext" xml:space="preserve">
<value>Conservation, nettoyage, exportation et statistiques de la base de données.</value>
</data>
<data name="Settings_Card_Integrations_Title" xml:space="preserve">
<value>Intégrations</value>
</data>
<data name="Settings_Card_Integrations_Subtext" xml:space="preserve">
<value>Autres plugins Dalamud avec lesquels HellionChat fonctionne. Intégrations à venir en aperçu.</value>
<value>Filtre de confidentialité, conservation, nettoyage, exportation et statistiques de la base de données.</value>
</data>
<data name="Settings_ThemeAndLayout_Theme_Heading" xml:space="preserve">
<value>Thème</value>
@@ -907,39 +835,12 @@
<data name="Settings_ThemeAndLayout_WindowOpacity_Description" xml:space="preserve">
<value>Niveau de transparence de l'arrière-plan de la fenêtre. Des valeurs basses laissent transparaître davantage le jeu. Astuce : le menu par fenêtre de Dalamud (icône hamburger dans la barre de titre) propose des réglages individuels d'opacité, de flou d'arrière-plan, de transparence aux clics et d'épinglage. Ils ont la priorité sur ce curseur pour la fenêtre concernée.</value>
</data>
<data name="Settings_FontsAndColours_Fonts_Heading" xml:space="preserve">
<value>Polices</value>
</data>
<data name="Settings_FontsAndColours_Colours_Heading" xml:space="preserve">
<value>Couleurs du chat</value>
</data>
<data name="Settings_DataManagement_Storage_Heading" xml:space="preserve">
<value>Stockage</value>
</data>
<data name="Settings_DataManagement_Retention_Heading" xml:space="preserve">
<value>Conservation</value>
</data>
<data name="Settings_DataManagement_Cleanup_Heading" xml:space="preserve">
<value>Nettoyage</value>
</data>
<data name="Settings_DataManagement_Export_Heading" xml:space="preserve">
<value>Exportation</value>
</data>
<data name="Settings_DataManagement_DbViewer_Heading" xml:space="preserve">
<value>Visualiseur de base de données</value>
</data>
<data name="Settings_DataManagement_Advanced_Heading" xml:space="preserve">
<value>Avancé (Maj+clic pour ouvrir)</value>
</data>
<data name="Settings_Window_Frame_Behaviour_Heading" xml:space="preserve">
<value>Comportement</value>
</data>
<data name="Migration_v16_OverrideStyle_Toast" xml:space="preserve">
<value>Hellion Chat 1.2.1 a réorganisé le menu des paramètres et supprimé l'ancienne option « Remplacer le style » (remplacée par le système de thèmes de la 1.1.0). Vos autres paramètres restent inchangés. La transparence de la fenêtre a été migrée vers « Thème et mise en page ». Une sauvegarde de la configuration précédente est disponible dans pluginConfigs/HellionChat.json.pre-v16-backup, à côté du HellionChat.json actif.</value>
</data>
<data name="Settings_Tab_Integrations" xml:space="preserve">
<value>Intégrations</value>
</data>
<data name="Settings_Integrations_Intro" xml:space="preserve">
<value>Les intégrations de plugins permettent à HellionChat de fonctionner avec d'autres plugins Dalamud installés. Chaque intégration détecte automatiquement sa cible et se désactive silencieusement lorsque le plugin cible est absent.</value>
</data>
@@ -1054,4 +955,195 @@
<value>Désactive le fondu enchaîné des thèmes, les animations de survol de la barre latérale et des cartes, ainsi que la pulsation des onglets non lus. Les changements de thème et les états de survol s'appliquent alors instantanément.</value>
<comment>AI-assisted machine translation. Pending native-speaker review.</comment>
</data>
<!-- Hellion Chat — Settings Overhaul section titles (v1.5.6) -->
<data name="Settings_Section_Input" xml:space="preserve">
<value>Saisie</value>
</data>
<data name="Settings_Section_Sound" xml:space="preserve">
<value>Son</value>
</data>
<data name="Settings_Section_Language" xml:space="preserve">
<value>Langue</value>
</data>
<data name="Settings_Section_Performance" xml:space="preserve">
<value>Performances</value>
</data>
<data name="Settings_Section_Sound_TabsHint" xml:space="preserve">
<value>Le son joué par onglet se configure dans l'onglet Canaux.</value>
</data>
<data name="Settings_Section_Theme" xml:space="preserve">
<value>Thème</value>
</data>
<data name="Settings_Section_Fonts" xml:space="preserve">
<value>Polices</value>
</data>
<data name="Settings_Section_Colours" xml:space="preserve">
<value>Couleurs</value>
</data>
<data name="Settings_Section_WindowStyle" xml:space="preserve">
<value>Style de fenêtre</value>
</data>
<data name="Settings_Section_Timestamps" xml:space="preserve">
<value>Horodatages</value>
</data>
<data name="Settings_Section_Animations" xml:space="preserve">
<value>Animations</value>
</data>
<data name="Settings_Section_Messages" xml:space="preserve">
<value>Messages</value>
</data>
<data name="Settings_Section_InputPreview" xml:space="preserve">
<value>Saisie et aperçu</value>
</data>
<data name="Settings_Section_AutoTellTabs" xml:space="preserve">
<value>Onglets tell automatiques</value>
</data>
<data name="Settings_Section_Emotes" xml:space="preserve">
<value>Emotes</value>
</data>
<data name="Settings_Section_LinksTooltips" xml:space="preserve">
<value>Liens et infobulles</value>
</data>
<data name="Settings_Section_NoviceNetwork" xml:space="preserve">
<value>Réseau des novices</value>
</data>
<data name="Settings_Section_Hide" xml:space="preserve">
<value>Masquer</value>
</data>
<data name="Settings_Section_InactivityHide" xml:space="preserve">
<value>Masquer en cas d'inactivité</value>
</data>
<data name="Settings_Section_Frame" xml:space="preserve">
<value>Cadre</value>
</data>
<data name="Settings_Section_Tab_Channels" xml:space="preserve">
<value>Canaux</value>
</data>
<data name="Settings_Section_Tab_Display" xml:space="preserve">
<value>Affichage</value>
</data>
<data name="Settings_Section_Tab_Notification" xml:space="preserve">
<value>Notification</value>
</data>
<data name="Settings_Section_Tab_Input" xml:space="preserve">
<value>Saisie</value>
</data>
<data name="Settings_Section_Tab_PopOut" xml:space="preserve">
<value>Fenêtre détachée</value>
</data>
<data name="Settings_Section_Tab_Volume_AllTabsHint" xml:space="preserve">
<value>Ce volume s'applique à tous les onglets.</value>
</data>
<data name="Settings_Section_PrivacyFilter" xml:space="preserve">
<value>Filtre de confidentialité</value>
</data>
<data name="Settings_Section_Storage" xml:space="preserve">
<value>Stockage</value>
</data>
<data name="Settings_Section_Retention" xml:space="preserve">
<value>Rétention</value>
</data>
<data name="Settings_Section_Cleanup" xml:space="preserve">
<value>Nettoyage</value>
</data>
<data name="Settings_Section_Export" xml:space="preserve">
<value>Exporter</value>
</data>
<data name="Settings_Section_Database" xml:space="preserve">
<value>Base de données</value>
</data>
<data name="Settings_Section_Extensions" xml:space="preserve">
<value>Extensions</value>
</data>
<data name="Settings_Section_PluginInfo" xml:space="preserve">
<value>Infos du plugin</value>
</data>
<data name="Settings_Section_Project" xml:space="preserve">
<value>Le projet</value>
</data>
<data name="Settings_Section_Translators" xml:space="preserve">
<value>Traducteurs</value>
</data>
<data name="Settings_Section_Changelog" xml:space="preserve">
<value>Journal des modifications</value>
</data>
<data name="Settings_Chat_NotifyFailedTell_Name" xml:space="preserve">
<value>Notifier en cas de Tell échoué</value>
</data>
<data name="Settings_Chat_NotifyFailedTell_Description" xml:space="preserve">
<value>Affiche une notification lorsqu'un Tell que vous avez envoyé n'a pas pu être remis (destinataire hors ligne, dans une instance ou vous bloquant).</value>
</data>
<data name="Settings_Chat_NotifyPluginDisclosure_Name" xml:space="preserve">
<value>Avertir avant d'envoyer des symboles réservés au plugin</value>
</data>
<data name="Settings_Chat_NotifyPluginDisclosure_Description" xml:space="preserve">
<value>Affiche un avertissement lorsqu'un message que vous êtes sur le point d'envoyer contient des symboles qui ne s'affichent correctement que pour les joueurs utilisant HellionChat ou un plugin similaire.</value>
</data>
<data name="Settings_Chat_WorldSuffix_Name" xml:space="preserve">
<value>Suffixe de monde</value>
</data>
<data name="Settings_Chat_WorldSuffix_Description" xml:space="preserve">
<value>Quand ajouter le monde d'origine au nom de l'expéditeur dans le journal de chat.</value>
</data>
<data name="Settings_Chat_NameForm_Name" xml:space="preserve">
<value>Format du nom</value>
</data>
<data name="Settings_Chat_NameForm_Description" xml:space="preserve">
<value>Comment les noms des expéditeurs sont affichés dans le journal de chat. Le nom complet est la valeur par défaut.</value>
</data>
<data name="NameDisplay_WorldSuffix_Never" xml:space="preserve">
<value>Jamais</value>
</data>
<data name="NameDisplay_WorldSuffix_OtherWorldOnly" xml:space="preserve">
<value>Autres mondes uniquement</value>
</data>
<data name="NameDisplay_WorldSuffix_Always" xml:space="preserve">
<value>Toujours</value>
</data>
<data name="NameDisplay_NameForm_Full" xml:space="preserve">
<value>Nom complet</value>
</data>
<data name="NameDisplay_NameForm_FirstNameOnly" xml:space="preserve">
<value>Prénom uniquement</value>
</data>
<data name="NameDisplay_NameForm_Initials" xml:space="preserve">
<value>Initiales</value>
</data>
<data name="Settings_General_CustomSoundVolume_Name" xml:space="preserve">
<value>Volume sonore personnalisé</value>
</data>
<data name="Settings_General_CustomSoundVolume_Description" xml:space="preserve">
<value>Volume de lecture des trois sons de notification personnalisés inclus. N'affecte pas les 16 sons du jeu.</value>
</data>
<data name="Settings_ThemeAndLayout_WindowOpacityInactive_Name" xml:space="preserve">
<value>Opacité de la fenêtre inactive</value>
</data>
<data name="Settings_ThemeAndLayout_WindowOpacityInactive_Description" xml:space="preserve">
<value>Opacité de l'arrière-plan de la fenêtre de chat principale lorsqu'elle n'est pas au premier plan. Le curseur ci-dessus définit la valeur en focus. Un remplacement par fenêtre dans le menu d'épinglage de Dalamud a la priorité sur les deux.</value>
</data>
<data name="Tabs_NotificationSound_Enable_Name" xml:space="preserve">
<value>Son de notification</value>
</data>
<data name="Tabs_NotificationSound_Description" xml:space="preserve">
<value>Joue un son lorsqu'un message arrive dans cet onglet pendant que vous regardez un autre onglet. Respecte le commutateur de son global.</value>
</data>
<data name="Tabs_NotificationSound_Option" xml:space="preserve">
<value>Son</value>
</data>
<data name="Tabs_NotificationSound_Preview" xml:space="preserve">
<value>Aperçu du son sélectionné</value>
</data>
<data name="Tabs_NotificationSound_CustomOption" xml:space="preserve">
<value>Son Hellion</value>
</data>
<data name="FailedTell_Notification_Generic" xml:space="preserve">
<value>Un Tell n'a pas pu être remis.</value>
</data>
<data name="FailedTell_Notification_Named" xml:space="preserve">
<value>Le Tell à {0} n'a pas pu être remis.</value>
</data>
<data name="ChatInput_PluginDisclosure_Warning" xml:space="preserve">
<value>Ce message contient des symboles réservés au plugin que d'autres joueurs pourraient voir comme des cases vides. Appuyez à nouveau sur Entrée pour envoyer quand même.</value>
</data>
</root>
+195 -103
View File
@@ -12,9 +12,6 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Privacy_Tab_Title" xml:space="preserve">
<value>Adatvédelem</value>
</data>
<data name="Privacy_FilterEnabled_Name" xml:space="preserve">
<value>Adatvédelmi szűrő bekapcsolása</value>
</data>
@@ -24,9 +21,6 @@
<data name="Privacy_FilterEnabled_StorageOnly_Help" xml:space="preserve">
<value>A szűrő csak azt szabályozza, mi kerül a helyi adatbázisba. A chat-napló továbbra is minden üzenetet élőben mutat; a kizárt csatornák egyszerűen nem tárolódnak tovább. Ha a látható megjelenítésből is el akarod távolítani a csatornákat, használd a játék normál chat-fül szűrőit.</value>
</data>
<data name="Privacy_Filter_Tree_Heading" xml:space="preserve">
<value>Adatvédelmi szűrő és fehérlista</value>
</data>
<data name="Privacy_Whitelist_Help" xml:space="preserve">
<value>Válaszd ki, mely csatornák mentődjenek a helyi adatbázisba. Az alapértelmezés az adatminimalizálást követi: csak a saját beszélgetéseid. Az előre beállított profilok az alábbi gombokkal alkalmazhatók.</value>
</data>
@@ -597,18 +591,6 @@
</data>
<!-- Hellion Chat — General tab section headings -->
<data name="Settings_General_Input_Heading" xml:space="preserve">
<value>Bevitel</value>
</data>
<data name="Settings_General_Audio_Heading" xml:space="preserve">
<value>Hang &amp; értesítések</value>
</data>
<data name="Settings_General_Performance_Heading" xml:space="preserve">
<value>Teljesítmény</value>
</data>
<data name="Settings_General_Language_Heading" xml:space="preserve">
<value>Nyelv &amp; beviteli segítségek</value>
</data>
<!-- Hellion Chat — Appearance tab section headings -->
<data name="Settings_Appearance_Theme_Heading" xml:space="preserve">
@@ -625,32 +607,11 @@
</data>
<!-- Hellion Chat — Window tab section headings -->
<data name="Settings_Window_Hide_Heading" xml:space="preserve">
<value>Elrejtés</value>
</data>
<data name="Settings_Window_InactivityHide_Heading" xml:space="preserve">
<value>Inaktivitásnál elrejtés</value>
</data>
<data name="Settings_Window_Frame_Heading" xml:space="preserve">
<value>Ablakkeret</value>
</data>
<data name="Settings_Window_Tooltips_Heading" xml:space="preserve">
<value>Eszköztippek</value>
</data>
<!-- Hellion Chat — Chat tab section headings -->
<data name="Settings_Chat_AutoTellTabs_Heading" xml:space="preserve">
<value>Auto-Tell-Tabs</value>
</data>
<data name="Settings_Chat_Behaviour_Heading" xml:space="preserve">
<value>Üzenetviselkedés</value>
</data>
<data name="Settings_Chat_Preview_Heading" xml:space="preserve">
<value>Előnézet</value>
</data>
<data name="Settings_Chat_Emotes_Heading" xml:space="preserve">
<value>Emote-ok</value>
</data>
<!-- Hellion Chat — Chat tab SymbolPicker -->
<data name="Settings_Chat_SymbolPicker_Enable_Name" xml:space="preserve">
@@ -672,15 +633,6 @@
</data>
<!-- Hellion Chat — Information tab section headings -->
<data name="Settings_Information_VersionInfo_Heading" xml:space="preserve">
<value>Verzióinformáció</value>
</data>
<data name="Settings_Information_About_Heading" xml:space="preserve">
<value>A HellionChat-ről</value>
</data>
<data name="Settings_Information_Changelog_Heading" xml:space="preserve">
<value>Changelog</value>
</data>
<!-- Hellion Chat — Default tab presets (channel-specific) -->
<data name="Tabs_Presets_System" xml:space="preserve">
@@ -811,12 +763,6 @@
<data name="Settings_Card_Tabs_Subtext" xml:space="preserve">
<value>Egyéni chat-fülek létrehozása és konfigurálása.</value>
</data>
<data name="Settings_Card_Privacy_Title" xml:space="preserve">
<value>Adatvédelem</value>
</data>
<data name="Settings_Card_Privacy_Subtext" xml:space="preserve">
<value>Adatvédelmi szűrő csatornánként és hogy mi tárolható.</value>
</data>
<data name="Settings_Card_Database_Title" xml:space="preserve">
<value>Adatbázis</value>
</data>
@@ -824,10 +770,10 @@
<value>Tárolás, migráció, régi adatok takarítása</value>
</data>
<data name="Settings_Card_Information_Title" xml:space="preserve">
<value>Információ</value>
<value>Névjegy</value>
</data>
<data name="Settings_Card_Information_Subtext" xml:space="preserve">
<value>Verzió, cél, licenc és changelog.</value>
<value>Bővítmények, verzió, projektinformációk, fordítók és changelog.</value>
</data>
<data name="Settings_Tab_Themes" xml:space="preserve">
<value>Témák</value>
@@ -868,29 +814,11 @@
<data name="Appearance_UseCompactDensity_Description" xml:space="preserve">
<value>Az üzenetelrendezést a kártyasor-alapértelmezettről visszaváltja egyszerű `[HH:mm] Feladó: Szöveg` sorokra.</value>
</data>
<data name="Settings_Card_ThemeAndLayout_Title" xml:space="preserve">
<value>Theme &amp; Layout</value>
</data>
<data name="Settings_Card_ThemeAndLayout_Subtext" xml:space="preserve">
<value>Téma, ablakkeret és időbélyeg-stílus.</value>
</data>
<data name="Settings_Card_FontsAndColours_Title" xml:space="preserve">
<value>Betűtípusok &amp; Színek</value>
</data>
<data name="Settings_Card_FontsAndColours_Subtext" xml:space="preserve">
<value>Betűtípus, betűméret és csatornánkénti chat-színek.</value>
</data>
<data name="Settings_Card_DataManagement_Title" xml:space="preserve">
<value>Adatkezelés</value>
<value>Adatok és adatvédelem</value>
</data>
<data name="Settings_Card_DataManagement_Subtext" xml:space="preserve">
<value>Megőrzés, takarítás, export és adatbázis-statisztikák.</value>
</data>
<data name="Settings_Card_Integrations_Title" xml:space="preserve">
<value>Integrációk</value>
</data>
<data name="Settings_Card_Integrations_Subtext" xml:space="preserve">
<value>Más Dalamud-pluginek, amelyekkel a HellionChat együttműködik. Hamarosan érkező integrációk előzetesben.</value>
<value>Adatvédelmi szűrő, megőrzés, takarítás, export és adatbázis-statisztikák.</value>
</data>
<data name="Settings_ThemeAndLayout_Theme_Heading" xml:space="preserve">
<value>Theme</value>
@@ -907,39 +835,12 @@
<data name="Settings_ThemeAndLayout_WindowOpacity_Description" xml:space="preserve">
<value>Mennyire átlátszó az ablak háttere. Alacsonyabb értékeknél több játék látszik át. Tipp: A Dalamud ablakmenüje (hamburger-ikon a fejlécen) ablakokként kínál felülbírálási lehetőséget az átlátszósághoz, háttér-homályosításhoz, átkattintáshoz és rögzítéshez: ezek felülírják ezt a csúszkát az adott ablaknál.</value>
</data>
<data name="Settings_FontsAndColours_Fonts_Heading" xml:space="preserve">
<value>Betűtípusok</value>
</data>
<data name="Settings_FontsAndColours_Colours_Heading" xml:space="preserve">
<value>Chat-színek</value>
</data>
<data name="Settings_DataManagement_Storage_Heading" xml:space="preserve">
<value>Tárolás</value>
</data>
<data name="Settings_DataManagement_Retention_Heading" xml:space="preserve">
<value>Megőrzés</value>
</data>
<data name="Settings_DataManagement_Cleanup_Heading" xml:space="preserve">
<value>Takarítás</value>
</data>
<data name="Settings_DataManagement_Export_Heading" xml:space="preserve">
<value>Export</value>
</data>
<data name="Settings_DataManagement_DbViewer_Heading" xml:space="preserve">
<value>Adatbázis-néző</value>
</data>
<data name="Settings_DataManagement_Advanced_Heading" xml:space="preserve">
<value>Speciális (Shift+kattintás a megnyitáshoz)</value>
</data>
<data name="Settings_Window_Frame_Behaviour_Heading" xml:space="preserve">
<value>Viselkedés</value>
</data>
<data name="Migration_v16_OverrideStyle_Toast" xml:space="preserve">
<value>A Hellion Chat 1.2.1 átrendezte a beállítások menüt és eltávolította a régi „Stílus felülbírálása" opciót (amelyet az 1.1.0-ban bevezetett témarendszer váltott fel). A többi beállításod változatlan maradt. Az ablak átlátszósága átkerült a „Theme &amp; Layout" menübe. Az előző konfiguráció biztonsági másolata a pluginConfigs/HellionChat.json.pre-v16-backup fájlban található az aktív HellionChat.json mellett.</value>
</data>
<data name="Settings_Tab_Integrations" xml:space="preserve">
<value>Integrációk</value>
</data>
<data name="Settings_Integrations_Intro" xml:space="preserve">
<value>A plugin-integrációk lehetővé teszik, hogy a HellionChat más telepített Dalamud-pluginekkel együttműködjön. Minden integráció automatikusan felismeri a célpluginét, és csendesen letiltja magát, ha a célplugin hiányzik.</value>
</data>
@@ -1053,4 +954,195 @@
<value>Letiltja a témák áttűnését, az oldalsáv és a kártyák rámutatási animációit, valamint az olvasatlan lapok pulzálását. A témaváltások és a rámutatási állapotok ehelyett azonnal érvénybe lépnek.</value>
<comment>AI-assisted machine translation. Pending native-speaker review.</comment>
</data>
<!-- Hellion Chat — Settings Overhaul section titles (v1.5.6) -->
<data name="Settings_Section_Input" xml:space="preserve">
<value>Bevitel</value>
</data>
<data name="Settings_Section_Sound" xml:space="preserve">
<value>Hang</value>
</data>
<data name="Settings_Section_Language" xml:space="preserve">
<value>Nyelv</value>
</data>
<data name="Settings_Section_Performance" xml:space="preserve">
<value>Teljesítmény</value>
</data>
<data name="Settings_Section_Sound_TabsHint" xml:space="preserve">
<value>Az egyes lapfülekhez tartozó hangot a Csatornák lapon lehet beállítani.</value>
</data>
<data name="Settings_Section_Theme" xml:space="preserve">
<value>Téma</value>
</data>
<data name="Settings_Section_Fonts" xml:space="preserve">
<value>Betűtípusok</value>
</data>
<data name="Settings_Section_Colours" xml:space="preserve">
<value>Színek</value>
</data>
<data name="Settings_Section_WindowStyle" xml:space="preserve">
<value>Ablakstílus</value>
</data>
<data name="Settings_Section_Timestamps" xml:space="preserve">
<value>Időbélyegek</value>
</data>
<data name="Settings_Section_Animations" xml:space="preserve">
<value>Animációk</value>
</data>
<data name="Settings_Section_Messages" xml:space="preserve">
<value>Üzenetek</value>
</data>
<data name="Settings_Section_InputPreview" xml:space="preserve">
<value>Bevitel és előnézet</value>
</data>
<data name="Settings_Section_AutoTellTabs" xml:space="preserve">
<value>Automatikus tell lapfülek</value>
</data>
<data name="Settings_Section_Emotes" xml:space="preserve">
<value>Emote-ok</value>
</data>
<data name="Settings_Section_LinksTooltips" xml:space="preserve">
<value>Hivatkozások és súgóbubborékok</value>
</data>
<data name="Settings_Section_NoviceNetwork" xml:space="preserve">
<value>Kezdők hálózata</value>
</data>
<data name="Settings_Section_Hide" xml:space="preserve">
<value>Elrejtés</value>
</data>
<data name="Settings_Section_InactivityHide" xml:space="preserve">
<value>Elrejtés inaktivitás esetén</value>
</data>
<data name="Settings_Section_Frame" xml:space="preserve">
<value>Keret</value>
</data>
<data name="Settings_Section_Tab_Channels" xml:space="preserve">
<value>Csatornák</value>
</data>
<data name="Settings_Section_Tab_Display" xml:space="preserve">
<value>Megjelenítés</value>
</data>
<data name="Settings_Section_Tab_Notification" xml:space="preserve">
<value>Értesítés</value>
</data>
<data name="Settings_Section_Tab_Input" xml:space="preserve">
<value>Bevitel</value>
</data>
<data name="Settings_Section_Tab_PopOut" xml:space="preserve">
<value>Kiugró ablak</value>
</data>
<data name="Settings_Section_Tab_Volume_AllTabsHint" xml:space="preserve">
<value>Ez a hangerő az összes lapfülre vonatkozik.</value>
</data>
<data name="Settings_Section_PrivacyFilter" xml:space="preserve">
<value>Adatvédelmi szűrő</value>
</data>
<data name="Settings_Section_Storage" xml:space="preserve">
<value>Tárolás</value>
</data>
<data name="Settings_Section_Retention" xml:space="preserve">
<value>Megőrzés</value>
</data>
<data name="Settings_Section_Cleanup" xml:space="preserve">
<value>Tisztítás</value>
</data>
<data name="Settings_Section_Export" xml:space="preserve">
<value>Exportálás</value>
</data>
<data name="Settings_Section_Database" xml:space="preserve">
<value>Adatbázis</value>
</data>
<data name="Settings_Section_Extensions" xml:space="preserve">
<value>Bővítmények</value>
</data>
<data name="Settings_Section_PluginInfo" xml:space="preserve">
<value>Plugin-adatok</value>
</data>
<data name="Settings_Section_Project" xml:space="preserve">
<value>A projekt</value>
</data>
<data name="Settings_Section_Translators" xml:space="preserve">
<value>Fordítók</value>
</data>
<data name="Settings_Section_Changelog" xml:space="preserve">
<value>Változásnapló</value>
</data>
<data name="Settings_Chat_NotifyFailedTell_Name" xml:space="preserve">
<value>Értesítés sikertelen tell esetén</value>
</data>
<data name="Settings_Chat_NotifyFailedTell_Description" xml:space="preserve">
<value>Értesítést jelenít meg, ha az elküldött tell nem kézbesíthető (a címzett offline, példányban van, vagy letiltott).</value>
</data>
<data name="Settings_Chat_NotifyPluginDisclosure_Name" xml:space="preserve">
<value>Figyelmeztetés plugin-kizárólagos szimbólumok küldése előtt</value>
</data>
<data name="Settings_Chat_NotifyPluginDisclosure_Description" xml:space="preserve">
<value>Figyelmeztetést jelenít meg, ha az elküldeni kívánt üzenet olyan szimbólumokat tartalmaz, amelyek csak HellionChat vagy hasonló plugint futtató játékosoknál jelennek meg helyesen.</value>
</data>
<data name="Settings_Chat_WorldSuffix_Name" xml:space="preserve">
<value>Világ utótag</value>
</data>
<data name="Settings_Chat_WorldSuffix_Description" xml:space="preserve">
<value>Mikor fűzze hozzá az otthoni világ nevét a küldő nevéhez a csevegőnaplóban.</value>
</data>
<data name="Settings_Chat_NameForm_Name" xml:space="preserve">
<value>Névadat formátuma</value>
</data>
<data name="Settings_Chat_NameForm_Description" xml:space="preserve">
<value>Hogyan jelenjenek meg a küldők nevei a csevegőnaplóban. Az alapértelmezett a teljes név.</value>
</data>
<data name="NameDisplay_WorldSuffix_Never" xml:space="preserve">
<value>Soha</value>
</data>
<data name="NameDisplay_WorldSuffix_OtherWorldOnly" xml:space="preserve">
<value>Csak más világok</value>
</data>
<data name="NameDisplay_WorldSuffix_Always" xml:space="preserve">
<value>Mindig</value>
</data>
<data name="NameDisplay_NameForm_Full" xml:space="preserve">
<value>Teljes név</value>
</data>
<data name="NameDisplay_NameForm_FirstNameOnly" xml:space="preserve">
<value>Csak keresztnév</value>
</data>
<data name="NameDisplay_NameForm_Initials" xml:space="preserve">
<value>Monogram</value>
</data>
<data name="Settings_General_CustomSoundVolume_Name" xml:space="preserve">
<value>Egyedi hangszint</value>
</data>
<data name="Settings_General_CustomSoundVolume_Description" xml:space="preserve">
<value>A három beépített egyedi értesítési hang lejátszási hangereje. Nem érinti a 16 játékhangot.</value>
</data>
<data name="Settings_ThemeAndLayout_WindowOpacityInactive_Name" xml:space="preserve">
<value>Inaktív ablak átlátszósága</value>
</data>
<data name="Settings_ThemeAndLayout_WindowOpacityInactive_Description" xml:space="preserve">
<value>A fő csevegőablak háttérátlátszósága, amikor nincs fókuszban. A fenti csúszka adja meg a fókuszban lévő értéket. A Dalamud rögzítési menüjének ablakonkénti felülbírálása mindkettőnél elsőbbséget élvez.</value>
</data>
<data name="Tabs_NotificationSound_Enable_Name" xml:space="preserve">
<value>Értesítési hang</value>
</data>
<data name="Tabs_NotificationSound_Description" xml:space="preserve">
<value>Hangjelzést ad, ha üzenet érkezik erre a fülre, miközben másikat nézel. Tiszteletben tartja a globális hang kapcsolót.</value>
</data>
<data name="Tabs_NotificationSound_Option" xml:space="preserve">
<value>Hang</value>
</data>
<data name="Tabs_NotificationSound_Preview" xml:space="preserve">
<value>A kiválasztott hang előnézete</value>
</data>
<data name="Tabs_NotificationSound_CustomOption" xml:space="preserve">
<value>Hellion hang</value>
</data>
<data name="FailedTell_Notification_Generic" xml:space="preserve">
<value>Egy tell nem kézbesíthető.</value>
</data>
<data name="FailedTell_Notification_Named" xml:space="preserve">
<value>A {0} részére küldött tell nem kézbesíthető.</value>
</data>
<data name="ChatInput_PluginDisclosure_Warning" xml:space="preserve">
<value>Ez az üzenet plugin-kizárólagos szimbólumokat tartalmaz, amelyeket más játékosok üres négyzetként láthatnak. Nyomd meg ismét az Entert a küldéshez.</value>
</data>
</root>
+194 -102
View File
@@ -12,9 +12,6 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Privacy_Tab_Title" xml:space="preserve">
<value>Privacy</value>
</data>
<data name="Privacy_FilterEnabled_Name" xml:space="preserve">
<value>Attiva filtro privacy</value>
</data>
@@ -24,9 +21,6 @@
<data name="Privacy_FilterEnabled_StorageOnly_Help" xml:space="preserve">
<value>Il filtro controlla solo cosa viene scritto nel database locale. Nel log della chat vedi comunque ogni messaggio in tempo reale; i canali esclusi non vengono semplicemente più salvati. Se vuoi rimuovere canali anche dalla visualizzazione, usa i normali filtri dei tab della chat nel gioco.</value>
</data>
<data name="Privacy_Filter_Tree_Heading" xml:space="preserve">
<value>Filtro privacy e whitelist</value>
</data>
<data name="Privacy_Whitelist_Help" xml:space="preserve">
<value>Scegli quali canali vengono salvati nel database locale. Il predefinito segue la minimizzazione dei dati: solo le tue conversazioni. Usa i pulsanti in basso per applicare un preset.</value>
</data>
@@ -597,18 +591,6 @@
</data>
<!-- Hellion Chat — General tab section headings -->
<data name="Settings_General_Input_Heading" xml:space="preserve">
<value>Input</value>
</data>
<data name="Settings_General_Audio_Heading" xml:space="preserve">
<value>Audio &amp; notifiche</value>
</data>
<data name="Settings_General_Performance_Heading" xml:space="preserve">
<value>Prestazioni</value>
</data>
<data name="Settings_General_Language_Heading" xml:space="preserve">
<value>Lingua &amp; aiuti all'input</value>
</data>
<!-- Hellion Chat — Appearance tab section headings -->
<data name="Settings_Appearance_Theme_Heading" xml:space="preserve">
@@ -625,32 +607,11 @@
</data>
<!-- Hellion Chat — Window tab section headings -->
<data name="Settings_Window_Hide_Heading" xml:space="preserve">
<value>Nascondi</value>
</data>
<data name="Settings_Window_InactivityHide_Heading" xml:space="preserve">
<value>Nascondi per inattività</value>
</data>
<data name="Settings_Window_Frame_Heading" xml:space="preserve">
<value>Cornice finestra</value>
</data>
<data name="Settings_Window_Tooltips_Heading" xml:space="preserve">
<value>Tooltip</value>
</data>
<!-- Hellion Chat — Chat tab section headings -->
<data name="Settings_Chat_AutoTellTabs_Heading" xml:space="preserve">
<value>Auto-Tell-Tabs</value>
</data>
<data name="Settings_Chat_Behaviour_Heading" xml:space="preserve">
<value>Comportamento messaggi</value>
</data>
<data name="Settings_Chat_Preview_Heading" xml:space="preserve">
<value>Anteprima</value>
</data>
<data name="Settings_Chat_Emotes_Heading" xml:space="preserve">
<value>Emote</value>
</data>
<!-- Hellion Chat — Chat tab SymbolPicker -->
<data name="Settings_Chat_SymbolPicker_Enable_Name" xml:space="preserve">
@@ -672,15 +633,6 @@
</data>
<!-- Hellion Chat — Information tab section headings -->
<data name="Settings_Information_VersionInfo_Heading" xml:space="preserve">
<value>Info versione</value>
</data>
<data name="Settings_Information_About_Heading" xml:space="preserve">
<value>Informazioni su HellionChat</value>
</data>
<data name="Settings_Information_Changelog_Heading" xml:space="preserve">
<value>Changelog</value>
</data>
<!-- Hellion Chat — Default tab presets (channel-specific) -->
<data name="Tabs_Presets_System" xml:space="preserve">
@@ -811,12 +763,6 @@
<data name="Settings_Card_Tabs_Subtext" xml:space="preserve">
<value>Crea e configura tab della chat personalizzati.</value>
</data>
<data name="Settings_Card_Privacy_Title" xml:space="preserve">
<value>Privacy</value>
</data>
<data name="Settings_Card_Privacy_Subtext" xml:space="preserve">
<value>Filtro privacy per canale e cosa può essere salvato.</value>
</data>
<data name="Settings_Card_Database_Title" xml:space="preserve">
<value>Database</value>
</data>
@@ -827,7 +773,7 @@
<value>Informazioni</value>
</data>
<data name="Settings_Card_Information_Subtext" xml:space="preserve">
<value>Versione, mission, licenza e changelog.</value>
<value>Estensioni, versione, informazioni sul progetto, traduttori e changelog.</value>
</data>
<data name="Settings_Tab_Themes" xml:space="preserve">
<value>Themes</value>
@@ -868,29 +814,11 @@
<data name="Appearance_UseCompactDensity_Description" xml:space="preserve">
<value>Passa il layout dei messaggi dal predefinito a righe card-row a righe singole `[HH:mm] Mittente: Testo`.</value>
</data>
<data name="Settings_Card_ThemeAndLayout_Title" xml:space="preserve">
<value>Theme &amp; Layout</value>
</data>
<data name="Settings_Card_ThemeAndLayout_Subtext" xml:space="preserve">
<value>Theme, cornice finestra e stile timestamp.</value>
</data>
<data name="Settings_Card_FontsAndColours_Title" xml:space="preserve">
<value>Font &amp; Colori</value>
</data>
<data name="Settings_Card_FontsAndColours_Subtext" xml:space="preserve">
<value>Font, dimensione font e colori della chat per canale.</value>
</data>
<data name="Settings_Card_DataManagement_Title" xml:space="preserve">
<value>Gestione dati</value>
<value>Dati e privacy</value>
</data>
<data name="Settings_Card_DataManagement_Subtext" xml:space="preserve">
<value>Conservazione, pulizia, esportazione e statistiche database.</value>
</data>
<data name="Settings_Card_Integrations_Title" xml:space="preserve">
<value>Integrazioni</value>
</data>
<data name="Settings_Card_Integrations_Subtext" xml:space="preserve">
<value>Altri plugin Dalamud con cui HellionChat lavora. Integrazioni future in anteprima.</value>
<value>Filtro privacy, conservazione, pulizia, esportazione e statistiche database.</value>
</data>
<data name="Settings_ThemeAndLayout_Theme_Heading" xml:space="preserve">
<value>Theme</value>
@@ -907,39 +835,12 @@
<data name="Settings_ThemeAndLayout_WindowOpacity_Description" xml:space="preserve">
<value>Quanto è trasparente lo sfondo della finestra. Valori più bassi lasciano trasparire più gioco. Suggerimento: il menu per finestra di Dalamud (hamburger nella barra del titolo) offre sovrascritture per finestra per opacità, sfocatura sfondo, click-through e blocco: queste hanno la precedenza su questo slider per la rispettiva finestra.</value>
</data>
<data name="Settings_FontsAndColours_Fonts_Heading" xml:space="preserve">
<value>Font</value>
</data>
<data name="Settings_FontsAndColours_Colours_Heading" xml:space="preserve">
<value>Colori della chat</value>
</data>
<data name="Settings_DataManagement_Storage_Heading" xml:space="preserve">
<value>Archiviazione</value>
</data>
<data name="Settings_DataManagement_Retention_Heading" xml:space="preserve">
<value>Conservazione</value>
</data>
<data name="Settings_DataManagement_Cleanup_Heading" xml:space="preserve">
<value>Pulizia</value>
</data>
<data name="Settings_DataManagement_Export_Heading" xml:space="preserve">
<value>Esporta</value>
</data>
<data name="Settings_DataManagement_DbViewer_Heading" xml:space="preserve">
<value>Visualizzatore database</value>
</data>
<data name="Settings_DataManagement_Advanced_Heading" xml:space="preserve">
<value>Avanzate (Shift+clic per aprire)</value>
</data>
<data name="Settings_Window_Frame_Behaviour_Heading" xml:space="preserve">
<value>Comportamento</value>
</data>
<data name="Migration_v16_OverrideStyle_Toast" xml:space="preserve">
<value>Hellion Chat 1.2.1 ha riorganizzato il menu delle impostazioni e rimosso la vecchia opzione "Override style" (sostituita dal sistema theme dalla 1.1.0). Le impostazioni rimanenti sono invariate. La trasparenza della finestra è stata migrata in "Theme &amp; Layout". Un backup della configurazione precedente si trova in pluginConfigs/HellionChat.json.pre-v16-backup accanto al file HellionChat.json attivo.</value>
</data>
<data name="Settings_Tab_Integrations" xml:space="preserve">
<value>Integrazioni</value>
</data>
<data name="Settings_Integrations_Intro" xml:space="preserve">
<value>Le integrazioni con plugin consentono a HellionChat di lavorare insieme ad altri plugin Dalamud installati. Ogni integrazione rileva automaticamente il suo target e si disattiva silenziosamente quando il plugin target è assente.</value>
</data>
@@ -1054,4 +955,195 @@
<value>Disattiva la dissolvenza dei temi, le animazioni al passaggio del mouse su barra laterale e schede e la pulsazione delle schede non lette. I cambi di tema e gli stati al passaggio del mouse vengono applicati immediatamente.</value>
<comment>AI-assisted machine translation. Pending native-speaker review.</comment>
</data>
<!-- Hellion Chat — Settings Overhaul section titles (v1.5.6) -->
<data name="Settings_Section_Input" xml:space="preserve">
<value>Inserimento</value>
</data>
<data name="Settings_Section_Sound" xml:space="preserve">
<value>Audio</value>
</data>
<data name="Settings_Section_Language" xml:space="preserve">
<value>Lingua</value>
</data>
<data name="Settings_Section_Performance" xml:space="preserve">
<value>Prestazioni</value>
</data>
<data name="Settings_Section_Sound_TabsHint" xml:space="preserve">
<value>Il suono riprodotto per scheda si imposta nella scheda Canali.</value>
</data>
<data name="Settings_Section_Theme" xml:space="preserve">
<value>Tema</value>
</data>
<data name="Settings_Section_Fonts" xml:space="preserve">
<value>Caratteri</value>
</data>
<data name="Settings_Section_Colours" xml:space="preserve">
<value>Colori</value>
</data>
<data name="Settings_Section_WindowStyle" xml:space="preserve">
<value>Stile finestra</value>
</data>
<data name="Settings_Section_Timestamps" xml:space="preserve">
<value>Timestamp</value>
</data>
<data name="Settings_Section_Animations" xml:space="preserve">
<value>Animazioni</value>
</data>
<data name="Settings_Section_Messages" xml:space="preserve">
<value>Messaggi</value>
</data>
<data name="Settings_Section_InputPreview" xml:space="preserve">
<value>Inserimento e anteprima</value>
</data>
<data name="Settings_Section_AutoTellTabs" xml:space="preserve">
<value>Schede tell automatiche</value>
</data>
<data name="Settings_Section_Emotes" xml:space="preserve">
<value>Emote</value>
</data>
<data name="Settings_Section_LinksTooltips" xml:space="preserve">
<value>Link e tooltip</value>
</data>
<data name="Settings_Section_NoviceNetwork" xml:space="preserve">
<value>Rete dei novizi</value>
</data>
<data name="Settings_Section_Hide" xml:space="preserve">
<value>Nascondi</value>
</data>
<data name="Settings_Section_InactivityHide" xml:space="preserve">
<value>Nascondi quando inattivo</value>
</data>
<data name="Settings_Section_Frame" xml:space="preserve">
<value>Cornice</value>
</data>
<data name="Settings_Section_Tab_Channels" xml:space="preserve">
<value>Canali</value>
</data>
<data name="Settings_Section_Tab_Display" xml:space="preserve">
<value>Visualizzazione</value>
</data>
<data name="Settings_Section_Tab_Notification" xml:space="preserve">
<value>Notifica</value>
</data>
<data name="Settings_Section_Tab_Input" xml:space="preserve">
<value>Inserimento</value>
</data>
<data name="Settings_Section_Tab_PopOut" xml:space="preserve">
<value>Finestra pop-out</value>
</data>
<data name="Settings_Section_Tab_Volume_AllTabsHint" xml:space="preserve">
<value>Questo volume si applica a tutte le schede.</value>
</data>
<data name="Settings_Section_PrivacyFilter" xml:space="preserve">
<value>Filtro privacy</value>
</data>
<data name="Settings_Section_Storage" xml:space="preserve">
<value>Archiviazione</value>
</data>
<data name="Settings_Section_Retention" xml:space="preserve">
<value>Conservazione</value>
</data>
<data name="Settings_Section_Cleanup" xml:space="preserve">
<value>Pulizia</value>
</data>
<data name="Settings_Section_Export" xml:space="preserve">
<value>Esportazione</value>
</data>
<data name="Settings_Section_Database" xml:space="preserve">
<value>Database</value>
</data>
<data name="Settings_Section_Extensions" xml:space="preserve">
<value>Estensioni</value>
</data>
<data name="Settings_Section_PluginInfo" xml:space="preserve">
<value>Informazioni plugin</value>
</data>
<data name="Settings_Section_Project" xml:space="preserve">
<value>Il progetto</value>
</data>
<data name="Settings_Section_Translators" xml:space="preserve">
<value>Traduttori</value>
</data>
<data name="Settings_Section_Changelog" xml:space="preserve">
<value>Registro delle modifiche</value>
</data>
<data name="Settings_Chat_NotifyFailedTell_Name" xml:space="preserve">
<value>Notifica per tell fallito</value>
</data>
<data name="Settings_Chat_NotifyFailedTell_Description" xml:space="preserve">
<value>Mostra una notifica quando un tell che hai inviato non può essere consegnato (destinatario offline, in un'istanza o ti ha bloccato).</value>
</data>
<data name="Settings_Chat_NotifyPluginDisclosure_Name" xml:space="preserve">
<value>Avvisa prima di inviare simboli esclusivi del plugin</value>
</data>
<data name="Settings_Chat_NotifyPluginDisclosure_Description" xml:space="preserve">
<value>Mostra un avviso quando un messaggio che stai per inviare contiene simboli che si visualizzano correttamente solo per i giocatori che usano HellionChat o un plugin simile.</value>
</data>
<data name="Settings_Chat_WorldSuffix_Name" xml:space="preserve">
<value>Suffisso mondo</value>
</data>
<data name="Settings_Chat_WorldSuffix_Description" xml:space="preserve">
<value>Quando aggiungere il mondo di origine al nome del mittente nel registro chat.</value>
</data>
<data name="Settings_Chat_NameForm_Name" xml:space="preserve">
<value>Formato del nome</value>
</data>
<data name="Settings_Chat_NameForm_Description" xml:space="preserve">
<value>Come vengono mostrati i nomi dei mittenti nel registro chat. Il nome completo è quello predefinito.</value>
</data>
<data name="NameDisplay_WorldSuffix_Never" xml:space="preserve">
<value>Mai</value>
</data>
<data name="NameDisplay_WorldSuffix_OtherWorldOnly" xml:space="preserve">
<value>Solo altri mondi</value>
</data>
<data name="NameDisplay_WorldSuffix_Always" xml:space="preserve">
<value>Sempre</value>
</data>
<data name="NameDisplay_NameForm_Full" xml:space="preserve">
<value>Nome completo</value>
</data>
<data name="NameDisplay_NameForm_FirstNameOnly" xml:space="preserve">
<value>Solo nome</value>
</data>
<data name="NameDisplay_NameForm_Initials" xml:space="preserve">
<value>Iniziali</value>
</data>
<data name="Settings_General_CustomSoundVolume_Name" xml:space="preserve">
<value>Volume suono personalizzato</value>
</data>
<data name="Settings_General_CustomSoundVolume_Description" xml:space="preserve">
<value>Volume di riproduzione dei tre suoni di notifica personalizzati inclusi. Non influisce sui 16 suoni di gioco.</value>
</data>
<data name="Settings_ThemeAndLayout_WindowOpacityInactive_Name" xml:space="preserve">
<value>Opacità finestra inattiva</value>
</data>
<data name="Settings_ThemeAndLayout_WindowOpacityInactive_Description" xml:space="preserve">
<value>Opacità dello sfondo della finestra di chat principale quando non è in primo piano. Il cursore sopra imposta il valore in primo piano. Un'impostazione per finestra nel menu di blocco di Dalamud ha la precedenza su entrambi.</value>
</data>
<data name="Tabs_NotificationSound_Enable_Name" xml:space="preserve">
<value>Suono di notifica</value>
</data>
<data name="Tabs_NotificationSound_Description" xml:space="preserve">
<value>Riproduce un suono quando arriva un messaggio in questa scheda mentre stai guardando un'altra scheda. Rispetta l'interruttore audio globale.</value>
</data>
<data name="Tabs_NotificationSound_Option" xml:space="preserve">
<value>Suono</value>
</data>
<data name="Tabs_NotificationSound_Preview" xml:space="preserve">
<value>Anteprima del suono selezionato</value>
</data>
<data name="Tabs_NotificationSound_CustomOption" xml:space="preserve">
<value>Suono Hellion</value>
</data>
<data name="FailedTell_Notification_Generic" xml:space="preserve">
<value>Un tell non può essere consegnato.</value>
</data>
<data name="FailedTell_Notification_Named" xml:space="preserve">
<value>Il tell a {0} non può essere consegnato.</value>
</data>
<data name="ChatInput_PluginDisclosure_Warning" xml:space="preserve">
<value>Questo messaggio contiene simboli esclusivi del plugin che altri giocatori potrebbero vedere come caselle vuote. Premi Invio di nuovo per inviare comunque.</value>
</data>
</root>
+195 -103
View File
@@ -12,9 +12,6 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Privacy_Tab_Title" xml:space="preserve">
<value>プライバシー</value>
</data>
<data name="Privacy_FilterEnabled_Name" xml:space="preserve">
<value>プライバシーフィルターを有効にする</value>
</data>
@@ -24,9 +21,6 @@
<data name="Privacy_FilterEnabled_StorageOnly_Help" xml:space="preserve">
<value>このフィルターはローカルデータベースへの書き込みのみを制御します。チャットログにはすべてのメッセージがリアルタイムで表示され、除外されたチャンネルは保存されなくなるだけです。チャンネルを表示からも除外したい場合は、ゲーム内の通常のチャットタブフィルターをご利用ください。</value>
</data>
<data name="Privacy_Filter_Tree_Heading" xml:space="preserve">
<value>プライバシーフィルターとホワイトリスト</value>
</data>
<data name="Privacy_Whitelist_Help" xml:space="preserve">
<value>ローカルデータベースに保存するチャンネルを選択してください。デフォルトはデータ最小化の原則に従い、自分の会話のみを保存します。下のボタンでプリセットを適用できます。</value>
</data>
@@ -597,18 +591,6 @@
</data>
<!-- Hellion Chat — General tab section headings -->
<data name="Settings_General_Input_Heading" xml:space="preserve">
<value>入力</value>
</data>
<data name="Settings_General_Audio_Heading" xml:space="preserve">
<value>オーディオ &amp; 通知</value>
</data>
<data name="Settings_General_Performance_Heading" xml:space="preserve">
<value>パフォーマンス</value>
</data>
<data name="Settings_General_Language_Heading" xml:space="preserve">
<value>言語 &amp; 入力補助</value>
</data>
<!-- Hellion Chat — Appearance tab section headings -->
<data name="Settings_Appearance_Theme_Heading" xml:space="preserve">
@@ -625,32 +607,11 @@
</data>
<!-- Hellion Chat — Window tab section headings -->
<data name="Settings_Window_Hide_Heading" xml:space="preserve">
<value>非表示</value>
</data>
<data name="Settings_Window_InactivityHide_Heading" xml:space="preserve">
<value>非アクティブ時の非表示</value>
</data>
<data name="Settings_Window_Frame_Heading" xml:space="preserve">
<value>ウィンドウフレーム</value>
</data>
<data name="Settings_Window_Tooltips_Heading" xml:space="preserve">
<value>ツールチップ</value>
</data>
<!-- Hellion Chat — Chat tab section headings -->
<data name="Settings_Chat_AutoTellTabs_Heading" xml:space="preserve">
<value>Auto-Tell-Tabs</value>
</data>
<data name="Settings_Chat_Behaviour_Heading" xml:space="preserve">
<value>メッセージの動作</value>
</data>
<data name="Settings_Chat_Preview_Heading" xml:space="preserve">
<value>プレビュー</value>
</data>
<data name="Settings_Chat_Emotes_Heading" xml:space="preserve">
<value>エモート</value>
</data>
<!-- Hellion Chat — Chat tab SymbolPicker -->
<data name="Settings_Chat_SymbolPicker_Enable_Name" xml:space="preserve">
@@ -672,15 +633,6 @@
</data>
<!-- Hellion Chat — Information tab section headings -->
<data name="Settings_Information_VersionInfo_Heading" xml:space="preserve">
<value>バージョン情報</value>
</data>
<data name="Settings_Information_About_Heading" xml:space="preserve">
<value>HellionChat について</value>
</data>
<data name="Settings_Information_Changelog_Heading" xml:space="preserve">
<value>Changelog</value>
</data>
<!-- Hellion Chat — Default tab presets (channel-specific) -->
<data name="Tabs_Presets_System" xml:space="preserve">
@@ -811,12 +763,6 @@
<data name="Settings_Card_Tabs_Subtext" xml:space="preserve">
<value>カスタムチャットタブの作成と設定。</value>
</data>
<data name="Settings_Card_Privacy_Title" xml:space="preserve">
<value>プライバシー</value>
</data>
<data name="Settings_Card_Privacy_Subtext" xml:space="preserve">
<value>チャンネル別のプライバシーフィルターと保存可能なデータの設定。</value>
</data>
<data name="Settings_Card_Database_Title" xml:space="preserve">
<value>データベース</value>
</data>
@@ -824,10 +770,10 @@
<value>ストレージ、移行、レガシーのクリーンアップ</value>
</data>
<data name="Settings_Card_Information_Title" xml:space="preserve">
<value>情報</value>
<value>概要</value>
</data>
<data name="Settings_Card_Information_Subtext" xml:space="preserve">
<value>バージョン、ミッション、ライセンス、Changelog。</value>
<value>拡張機能、バージョン、プロジェクト情報、翻訳者、Changelog。</value>
</data>
<data name="Settings_Tab_Themes" xml:space="preserve">
<value>テーマ</value>
@@ -868,29 +814,11 @@
<data name="Appearance_UseCompactDensity_Description" xml:space="preserve">
<value>メッセージレイアウトをカード行のデフォルトから `[HH:mm] 送信者: テキスト` の1行表示に切り替えます。</value>
</data>
<data name="Settings_Card_ThemeAndLayout_Title" xml:space="preserve">
<value>テーマ &amp; レイアウト</value>
</data>
<data name="Settings_Card_ThemeAndLayout_Subtext" xml:space="preserve">
<value>テーマ、ウィンドウフレーム、タイムスタンプのスタイル。</value>
</data>
<data name="Settings_Card_FontsAndColours_Title" xml:space="preserve">
<value>フォント &amp; カラー</value>
</data>
<data name="Settings_Card_FontsAndColours_Subtext" xml:space="preserve">
<value>フォント、フォントサイズ、チャンネル別のチャットカラー。</value>
</data>
<data name="Settings_Card_DataManagement_Title" xml:space="preserve">
<value>データ管理</value>
<value>データとプライバシー</value>
</data>
<data name="Settings_Card_DataManagement_Subtext" xml:space="preserve">
<value>保持期間、クリーンアップ、エクスポート、データベース統計。</value>
</data>
<data name="Settings_Card_Integrations_Title" xml:space="preserve">
<value>連携</value>
</data>
<data name="Settings_Card_Integrations_Subtext" xml:space="preserve">
<value>HellionChat と連携する他の Dalamud プラグイン。今後の連携機能のプレビュー。</value>
<value>プライバシーフィルター、保持期間、クリーンアップ、エクスポート、データベース統計。</value>
</data>
<data name="Settings_ThemeAndLayout_Theme_Heading" xml:space="preserve">
<value>テーマ</value>
@@ -907,39 +835,12 @@
<data name="Settings_ThemeAndLayout_WindowOpacity_Description" xml:space="preserve">
<value>ウィンドウの背景の透明度です。値を下げるとゲームがより多く透けて見えます。ヒント: Dalamud のウィンドウごとのメニュー(タイトルバーのハンバーガーメニュー)では、各ウィンドウの不透明度、背景ブラー、クリックスルー、ピン留めを個別に上書きできます。これらはこのスライダーより優先されます。</value>
</data>
<data name="Settings_FontsAndColours_Fonts_Heading" xml:space="preserve">
<value>フォント</value>
</data>
<data name="Settings_FontsAndColours_Colours_Heading" xml:space="preserve">
<value>チャットカラー</value>
</data>
<data name="Settings_DataManagement_Storage_Heading" xml:space="preserve">
<value>ストレージ</value>
</data>
<data name="Settings_DataManagement_Retention_Heading" xml:space="preserve">
<value>保持期間</value>
</data>
<data name="Settings_DataManagement_Cleanup_Heading" xml:space="preserve">
<value>クリーンアップ</value>
</data>
<data name="Settings_DataManagement_Export_Heading" xml:space="preserve">
<value>エクスポート</value>
</data>
<data name="Settings_DataManagement_DbViewer_Heading" xml:space="preserve">
<value>データベースビューアー</value>
</data>
<data name="Settings_DataManagement_Advanced_Heading" xml:space="preserve">
<value>詳細設定(Shift+クリックで開く)</value>
</data>
<data name="Settings_Window_Frame_Behaviour_Heading" xml:space="preserve">
<value>動作</value>
</data>
<data name="Migration_v16_OverrideStyle_Toast" xml:space="preserve">
<value>Hellion Chat 1.2.1 で設定メニューが整理され、古い「スタイルを上書き」オプションが削除されました(1.1.0 のテーマシステムに置き換えられました)。その他の設定は変更されていません。ウィンドウの透明度は「テーマ &amp; レイアウト」に移行されました。以前の設定のバックアップは、アクティブな HellionChat.json の隣に pluginConfigs/HellionChat.json.pre-v16-backup として保存されています。</value>
</data>
<data name="Settings_Tab_Integrations" xml:space="preserve">
<value>連携</value>
</data>
<data name="Settings_Integrations_Intro" xml:space="preserve">
<value>プラグイン連携により、HellionChat は他のインストール済み Dalamud プラグインと連携できます。各連携は対象プラグインを自動で検出し、対象プラグインがない場合は静かに無効化されます。</value>
</data>
@@ -1054,4 +955,195 @@
<value>テーマのクロスフェード、サイドバーとカードのホバーアニメーション、未読タブのパルスを無効にします。テーマの切り替えとホバー状態は即座に適用されます。</value>
<comment>AI-assisted machine translation. Pending native-speaker review.</comment>
</data>
<!-- Hellion Chat — Settings Overhaul section titles (v1.5.6) -->
<data name="Settings_Section_Input" xml:space="preserve">
<value>入力</value>
</data>
<data name="Settings_Section_Sound" xml:space="preserve">
<value>サウンド</value>
</data>
<data name="Settings_Section_Language" xml:space="preserve">
<value>言語</value>
</data>
<data name="Settings_Section_Performance" xml:space="preserve">
<value>パフォーマンス</value>
</data>
<data name="Settings_Section_Sound_TabsHint" xml:space="preserve">
<value>タブごとに再生されるサウンドは「チャンネル」タブで設定します。</value>
</data>
<data name="Settings_Section_Theme" xml:space="preserve">
<value>テーマ</value>
</data>
<data name="Settings_Section_Fonts" xml:space="preserve">
<value>フォント</value>
</data>
<data name="Settings_Section_Colours" xml:space="preserve">
<value>カラー</value>
</data>
<data name="Settings_Section_WindowStyle" xml:space="preserve">
<value>ウィンドウスタイル</value>
</data>
<data name="Settings_Section_Timestamps" xml:space="preserve">
<value>タイムスタンプ</value>
</data>
<data name="Settings_Section_Animations" xml:space="preserve">
<value>アニメーション</value>
</data>
<data name="Settings_Section_Messages" xml:space="preserve">
<value>メッセージ</value>
</data>
<data name="Settings_Section_InputPreview" xml:space="preserve">
<value>入力とプレビュー</value>
</data>
<data name="Settings_Section_AutoTellTabs" xml:space="preserve">
<value>オートTellタブ</value>
</data>
<data name="Settings_Section_Emotes" xml:space="preserve">
<value>エモート</value>
</data>
<data name="Settings_Section_LinksTooltips" xml:space="preserve">
<value>リンクとツールチップ</value>
</data>
<data name="Settings_Section_NoviceNetwork" xml:space="preserve">
<value>ビギナーチャンネル</value>
</data>
<data name="Settings_Section_Hide" xml:space="preserve">
<value>非表示</value>
</data>
<data name="Settings_Section_InactivityHide" xml:space="preserve">
<value>非アクティブ時に非表示</value>
</data>
<data name="Settings_Section_Frame" xml:space="preserve">
<value>フレーム</value>
</data>
<data name="Settings_Section_Tab_Channels" xml:space="preserve">
<value>チャンネル</value>
</data>
<data name="Settings_Section_Tab_Display" xml:space="preserve">
<value>表示</value>
</data>
<data name="Settings_Section_Tab_Notification" xml:space="preserve">
<value>通知</value>
</data>
<data name="Settings_Section_Tab_Input" xml:space="preserve">
<value>入力</value>
</data>
<data name="Settings_Section_Tab_PopOut" xml:space="preserve">
<value>ポップアウトウィンドウ</value>
</data>
<data name="Settings_Section_Tab_Volume_AllTabsHint" xml:space="preserve">
<value>この音量はすべてのタブに適用されます。</value>
</data>
<data name="Settings_Section_PrivacyFilter" xml:space="preserve">
<value>プライバシーフィルター</value>
</data>
<data name="Settings_Section_Storage" xml:space="preserve">
<value>ストレージ</value>
</data>
<data name="Settings_Section_Retention" xml:space="preserve">
<value>保持</value>
</data>
<data name="Settings_Section_Cleanup" xml:space="preserve">
<value>クリーンアップ</value>
</data>
<data name="Settings_Section_Export" xml:space="preserve">
<value>エクスポート</value>
</data>
<data name="Settings_Section_Database" xml:space="preserve">
<value>データベース</value>
</data>
<data name="Settings_Section_Extensions" xml:space="preserve">
<value>拡張機能</value>
</data>
<data name="Settings_Section_PluginInfo" xml:space="preserve">
<value>プラグイン情報</value>
</data>
<data name="Settings_Section_Project" xml:space="preserve">
<value>プロジェクト</value>
</data>
<data name="Settings_Section_Translators" xml:space="preserve">
<value>翻訳者</value>
</data>
<data name="Settings_Section_Changelog" xml:space="preserve">
<value>変更履歴</value>
</data>
<data name="Settings_Chat_NotifyFailedTell_Name" xml:space="preserve">
<value>テル失敗通知</value>
</data>
<data name="Settings_Chat_NotifyFailedTell_Description" xml:space="preserve">
<value>送信したテルが届かなかった場合(相手がオフライン、インスタンス内、またはブロックしている場合)にトースト通知を表示します。</value>
</data>
<data name="Settings_Chat_NotifyPluginDisclosure_Name" xml:space="preserve">
<value>プラグイン専用シンボル送信前に警告</value>
</data>
<data name="Settings_Chat_NotifyPluginDisclosure_Description" xml:space="preserve">
<value>送信しようとしているメッセージに、HellionChatや類似プラグインを使用しているプレイヤーにのみ正しく表示されるシンボルが含まれている場合に警告を表示します。</value>
</data>
<data name="Settings_Chat_WorldSuffix_Name" xml:space="preserve">
<value>ワールドサフィックス</value>
</data>
<data name="Settings_Chat_WorldSuffix_Description" xml:space="preserve">
<value>チャットログの送信者名にホームワールドを付加するタイミング。</value>
</data>
<data name="Settings_Chat_NameForm_Name" xml:space="preserve">
<value>名前の形式</value>
</data>
<data name="Settings_Chat_NameForm_Description" xml:space="preserve">
<value>チャットログでの送信者名の表示形式。デフォルトはフルネームです。</value>
</data>
<data name="NameDisplay_WorldSuffix_Never" xml:space="preserve">
<value>なし</value>
</data>
<data name="NameDisplay_WorldSuffix_OtherWorldOnly" xml:space="preserve">
<value>他ワールドのみ</value>
</data>
<data name="NameDisplay_WorldSuffix_Always" xml:space="preserve">
<value>常に</value>
</data>
<data name="NameDisplay_NameForm_Full" xml:space="preserve">
<value>フルネーム</value>
</data>
<data name="NameDisplay_NameForm_FirstNameOnly" xml:space="preserve">
<value>名のみ</value>
</data>
<data name="NameDisplay_NameForm_Initials" xml:space="preserve">
<value>イニシャル</value>
</data>
<data name="Settings_General_CustomSoundVolume_Name" xml:space="preserve">
<value>カスタム通知音量</value>
</data>
<data name="Settings_General_CustomSoundVolume_Description" xml:space="preserve">
<value>3つの内蔵カスタム通知音の再生音量。16のゲームサウンドには影響しません。</value>
</data>
<data name="Settings_ThemeAndLayout_WindowOpacityInactive_Name" xml:space="preserve">
<value>非アクティブ時の不透明度</value>
</data>
<data name="Settings_ThemeAndLayout_WindowOpacityInactive_Description" xml:space="preserve">
<value>フォーカスしていないときのメインチャットウィンドウの背景不透明度。上のスライダーでフォーカス時の値を設定します。Dalamudのウィンドウピン留めメニューのウィンドウごとの設定が優先されます。</value>
</data>
<data name="Tabs_NotificationSound_Enable_Name" xml:space="preserve">
<value>通知音</value>
</data>
<data name="Tabs_NotificationSound_Description" xml:space="preserve">
<value>別のタブを表示中にこのタブにメッセージが届いた際に音を再生します。グローバルサウンドトグルに従います。</value>
</data>
<data name="Tabs_NotificationSound_Option" xml:space="preserve">
<value>サウンド</value>
</data>
<data name="Tabs_NotificationSound_Preview" xml:space="preserve">
<value>選択したサウンドをプレビュー</value>
</data>
<data name="Tabs_NotificationSound_CustomOption" xml:space="preserve">
<value>Hellionサウンド</value>
</data>
<data name="FailedTell_Notification_Generic" xml:space="preserve">
<value>テルを届けられませんでした。</value>
</data>
<data name="FailedTell_Notification_Named" xml:space="preserve">
<value>{0} へのテルを届けられませんでした。</value>
</data>
<data name="ChatInput_PluginDisclosure_Warning" xml:space="preserve">
<value>このメッセージにはプラグイン専用のシンボルが含まれており、他のプレイヤーには空白の箱として表示される可能性があります。Enterを再度押して送信します。</value>
</data>
</root>
+195 -103
View File
@@ -12,9 +12,6 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Privacy_Tab_Title" xml:space="preserve">
<value>개인정보</value>
</data>
<data name="Privacy_FilterEnabled_Name" xml:space="preserve">
<value>개인정보 필터 사용</value>
</data>
@@ -24,9 +21,6 @@
<data name="Privacy_FilterEnabled_StorageOnly_Help" xml:space="preserve">
<value>필터는 로컬 데이터베이스에 기록되는 내용만 제어합니다. 채팅 로그에는 모든 메시지가 실시간으로 표시되며, 제외된 채널은 저장되지 않을 뿐입니다. 채널을 화면 표시에서도 제거하려면 게임 내 일반 채팅 탭 필터를 사용하세요.</value>
</data>
<data name="Privacy_Filter_Tree_Heading" xml:space="preserve">
<value>개인정보 필터 및 화이트리스트</value>
</data>
<data name="Privacy_Whitelist_Help" xml:space="preserve">
<value>로컬 데이터베이스에 저장할 채널을 선택하세요. 기본값은 데이터 최소화 원칙을 따릅니다. 자신의 대화만 저장됩니다. 아래 버튼으로 프리셋을 적용할 수 있습니다.</value>
</data>
@@ -597,18 +591,6 @@
</data>
<!-- Hellion Chat — General tab section headings -->
<data name="Settings_General_Input_Heading" xml:space="preserve">
<value>입력</value>
</data>
<data name="Settings_General_Audio_Heading" xml:space="preserve">
<value>오디오 &amp; 알림</value>
</data>
<data name="Settings_General_Performance_Heading" xml:space="preserve">
<value>성능</value>
</data>
<data name="Settings_General_Language_Heading" xml:space="preserve">
<value>언어 &amp; 입력 보조</value>
</data>
<!-- Hellion Chat — Appearance tab section headings -->
<data name="Settings_Appearance_Theme_Heading" xml:space="preserve">
@@ -625,32 +607,11 @@
</data>
<!-- Hellion Chat — Window tab section headings -->
<data name="Settings_Window_Hide_Heading" xml:space="preserve">
<value>숨기기</value>
</data>
<data name="Settings_Window_InactivityHide_Heading" xml:space="preserve">
<value>비활성 시 숨기기</value>
</data>
<data name="Settings_Window_Frame_Heading" xml:space="preserve">
<value>창 프레임</value>
</data>
<data name="Settings_Window_Tooltips_Heading" xml:space="preserve">
<value>툴팁</value>
</data>
<!-- Hellion Chat — Chat tab section headings -->
<data name="Settings_Chat_AutoTellTabs_Heading" xml:space="preserve">
<value>Auto-Tell-Tabs</value>
</data>
<data name="Settings_Chat_Behaviour_Heading" xml:space="preserve">
<value>메시지 동작</value>
</data>
<data name="Settings_Chat_Preview_Heading" xml:space="preserve">
<value>미리보기</value>
</data>
<data name="Settings_Chat_Emotes_Heading" xml:space="preserve">
<value>감정 표현</value>
</data>
<!-- Hellion Chat — Chat tab SymbolPicker -->
<data name="Settings_Chat_SymbolPicker_Enable_Name" xml:space="preserve">
@@ -672,15 +633,6 @@
</data>
<!-- Hellion Chat — Information tab section headings -->
<data name="Settings_Information_VersionInfo_Heading" xml:space="preserve">
<value>버전 정보</value>
</data>
<data name="Settings_Information_About_Heading" xml:space="preserve">
<value>HellionChat 정보</value>
</data>
<data name="Settings_Information_Changelog_Heading" xml:space="preserve">
<value>Changelog</value>
</data>
<!-- Hellion Chat — Default tab presets (channel-specific) -->
<data name="Tabs_Presets_System" xml:space="preserve">
@@ -811,12 +763,6 @@
<data name="Settings_Card_Tabs_Subtext" xml:space="preserve">
<value>사용자 정의 채팅 탭 생성 및 설정.</value>
</data>
<data name="Settings_Card_Privacy_Title" xml:space="preserve">
<value>개인정보</value>
</data>
<data name="Settings_Card_Privacy_Subtext" xml:space="preserve">
<value>채널별 개인정보 필터 및 저장 허용 범위.</value>
</data>
<data name="Settings_Card_Database_Title" xml:space="preserve">
<value>데이터베이스</value>
</data>
@@ -824,10 +770,10 @@
<value>저장소, 마이그레이션, 레거시 정리.</value>
</data>
<data name="Settings_Card_Information_Title" xml:space="preserve">
<value>정보</value>
<value>소개</value>
</data>
<data name="Settings_Card_Information_Subtext" xml:space="preserve">
<value>버전, 목적, 라이선스, Changelog.</value>
<value>확장 기능, 버전, 프로젝트 정보, 번역자, Changelog.</value>
</data>
<data name="Settings_Tab_Themes" xml:space="preserve">
<value>테마</value>
@@ -868,29 +814,11 @@
<data name="Appearance_UseCompactDensity_Description" xml:space="preserve">
<value>메시지 레이아웃을 카드 행 기본값에서 단일 행 `[HH:mm] Sender: Text` 형식으로 전환합니다.</value>
</data>
<data name="Settings_Card_ThemeAndLayout_Title" xml:space="preserve">
<value>테마 &amp; 레이아웃</value>
</data>
<data name="Settings_Card_ThemeAndLayout_Subtext" xml:space="preserve">
<value>테마, 창 프레임, 타임스탬프 스타일.</value>
</data>
<data name="Settings_Card_FontsAndColours_Title" xml:space="preserve">
<value>글꼴 &amp; 색상</value>
</data>
<data name="Settings_Card_FontsAndColours_Subtext" xml:space="preserve">
<value>글꼴, 글꼴 크기, 채널별 채팅 색상.</value>
</data>
<data name="Settings_Card_DataManagement_Title" xml:space="preserve">
<value>데이터 관리</value>
<value>데이터 및 개인 정보</value>
</data>
<data name="Settings_Card_DataManagement_Subtext" xml:space="preserve">
<value>보존, 정리, 내보내기, 데이터베이스 통계.</value>
</data>
<data name="Settings_Card_Integrations_Title" xml:space="preserve">
<value>연동</value>
</data>
<data name="Settings_Card_Integrations_Subtext" xml:space="preserve">
<value>HellionChat과 함께 작동하는 다른 Dalamud 플러그인. 예정된 연동 미리보기 포함.</value>
<value>개인 정보 필터, 보존, 정리, 내보내기, 데이터베이스 통계.</value>
</data>
<data name="Settings_ThemeAndLayout_Theme_Heading" xml:space="preserve">
<value>테마</value>
@@ -907,39 +835,12 @@
<data name="Settings_ThemeAndLayout_WindowOpacity_Description" xml:space="preserve">
<value>창 배경의 투명도입니다. 값이 낮을수록 게임이 더 많이 비쳐 보입니다. 팁: Dalamud의 창별 메뉴 (제목 표시줄의 햄버거 메뉴)에서 해당 창에 대한 불투명도, 배경 블러, 클릭 통과, 고정 설정을 개별적으로 재정의할 수 있습니다. 이 설정들은 해당 창에 대해 이 슬라이더보다 우선합니다.</value>
</data>
<data name="Settings_FontsAndColours_Fonts_Heading" xml:space="preserve">
<value>글꼴</value>
</data>
<data name="Settings_FontsAndColours_Colours_Heading" xml:space="preserve">
<value>채팅 색상</value>
</data>
<data name="Settings_DataManagement_Storage_Heading" xml:space="preserve">
<value>저장소</value>
</data>
<data name="Settings_DataManagement_Retention_Heading" xml:space="preserve">
<value>보존</value>
</data>
<data name="Settings_DataManagement_Cleanup_Heading" xml:space="preserve">
<value>정리</value>
</data>
<data name="Settings_DataManagement_Export_Heading" xml:space="preserve">
<value>내보내기</value>
</data>
<data name="Settings_DataManagement_DbViewer_Heading" xml:space="preserve">
<value>데이터베이스 뷰어</value>
</data>
<data name="Settings_DataManagement_Advanced_Heading" xml:space="preserve">
<value>고급 설정 (Shift+클릭으로 열기)</value>
</data>
<data name="Settings_Window_Frame_Behaviour_Heading" xml:space="preserve">
<value>동작</value>
</data>
<data name="Migration_v16_OverrideStyle_Toast" xml:space="preserve">
<value>Hellion Chat 1.2.1에서 설정 메뉴가 재구성되었으며 기존 "스타일 재정의" 옵션이 제거되었습니다 (1.1.0의 테마 시스템으로 대체됨). 나머지 설정은 변경되지 않았습니다. 창 투명도는 "테마 &amp; 레이아웃"으로 이전되었습니다. 이전 설정의 백업이 활성 HellionChat.json 옆에 pluginConfigs/HellionChat.json.pre-v16-backup으로 저장되어 있습니다.</value>
</data>
<data name="Settings_Tab_Integrations" xml:space="preserve">
<value>연동</value>
</data>
<data name="Settings_Integrations_Intro" xml:space="preserve">
<value>플러그인 연동을 통해 HellionChat은 설치된 다른 Dalamud 플러그인과 함께 작동합니다. 각 연동은 대상 플러그인을 자동으로 감지하며, 대상 플러그인이 없으면 자동으로 비활성화됩니다.</value>
</data>
@@ -1054,4 +955,195 @@
<value>테마 크로스페이드, 사이드바 및 카드 호버 애니메이션, 읽지 않은 탭의 펄스 효과를 비활성화합니다. 테마 전환과 호버 상태가 즉시 적용됩니다.</value>
<comment>AI-assisted machine translation. Pending native-speaker review.</comment>
</data>
<!-- Hellion Chat — Settings Overhaul section titles (v1.5.6) -->
<data name="Settings_Section_Input" xml:space="preserve">
<value>입력</value>
</data>
<data name="Settings_Section_Sound" xml:space="preserve">
<value>소리</value>
</data>
<data name="Settings_Section_Language" xml:space="preserve">
<value>언어</value>
</data>
<data name="Settings_Section_Performance" xml:space="preserve">
<value>성능</value>
</data>
<data name="Settings_Section_Sound_TabsHint" xml:space="preserve">
<value>탭별 재생 사운드는 채널 탭에서 설정합니다.</value>
</data>
<data name="Settings_Section_Theme" xml:space="preserve">
<value>테마</value>
</data>
<data name="Settings_Section_Fonts" xml:space="preserve">
<value>글꼴</value>
</data>
<data name="Settings_Section_Colours" xml:space="preserve">
<value>색상</value>
</data>
<data name="Settings_Section_WindowStyle" xml:space="preserve">
<value>창 스타일</value>
</data>
<data name="Settings_Section_Timestamps" xml:space="preserve">
<value>타임스탬프</value>
</data>
<data name="Settings_Section_Animations" xml:space="preserve">
<value>애니메이션</value>
</data>
<data name="Settings_Section_Messages" xml:space="preserve">
<value>메시지</value>
</data>
<data name="Settings_Section_InputPreview" xml:space="preserve">
<value>입력 및 미리 보기</value>
</data>
<data name="Settings_Section_AutoTellTabs" xml:space="preserve">
<value>자동 텔 탭</value>
</data>
<data name="Settings_Section_Emotes" xml:space="preserve">
<value>감정 표현</value>
</data>
<data name="Settings_Section_LinksTooltips" xml:space="preserve">
<value>링크 및 툴팁</value>
</data>
<data name="Settings_Section_NoviceNetwork" xml:space="preserve">
<value>초보자 채널</value>
</data>
<data name="Settings_Section_Hide" xml:space="preserve">
<value>숨기기</value>
</data>
<data name="Settings_Section_InactivityHide" xml:space="preserve">
<value>비활성 시 숨기기</value>
</data>
<data name="Settings_Section_Frame" xml:space="preserve">
<value>프레임</value>
</data>
<data name="Settings_Section_Tab_Channels" xml:space="preserve">
<value>채널</value>
</data>
<data name="Settings_Section_Tab_Display" xml:space="preserve">
<value>표시</value>
</data>
<data name="Settings_Section_Tab_Notification" xml:space="preserve">
<value>알림</value>
</data>
<data name="Settings_Section_Tab_Input" xml:space="preserve">
<value>입력</value>
</data>
<data name="Settings_Section_Tab_PopOut" xml:space="preserve">
<value>팝아웃 창</value>
</data>
<data name="Settings_Section_Tab_Volume_AllTabsHint" xml:space="preserve">
<value>이 볼륨은 모든 탭에 적용됩니다.</value>
</data>
<data name="Settings_Section_PrivacyFilter" xml:space="preserve">
<value>개인정보 필터</value>
</data>
<data name="Settings_Section_Storage" xml:space="preserve">
<value>저장</value>
</data>
<data name="Settings_Section_Retention" xml:space="preserve">
<value>보존</value>
</data>
<data name="Settings_Section_Cleanup" xml:space="preserve">
<value>정리</value>
</data>
<data name="Settings_Section_Export" xml:space="preserve">
<value>내보내기</value>
</data>
<data name="Settings_Section_Database" xml:space="preserve">
<value>데이터베이스</value>
</data>
<data name="Settings_Section_Extensions" xml:space="preserve">
<value>확장</value>
</data>
<data name="Settings_Section_PluginInfo" xml:space="preserve">
<value>플러그인 정보</value>
</data>
<data name="Settings_Section_Project" xml:space="preserve">
<value>프로젝트</value>
</data>
<data name="Settings_Section_Translators" xml:space="preserve">
<value>번역자</value>
</data>
<data name="Settings_Section_Changelog" xml:space="preserve">
<value>변경 사항</value>
</data>
<data name="Settings_Chat_NotifyFailedTell_Name" xml:space="preserve">
<value>실패한 귓속말 알림</value>
</data>
<data name="Settings_Chat_NotifyFailedTell_Description" xml:space="preserve">
<value>귓속말이 전달되지 않았을 때 (상대방이 오프라인, 인스턴스 내, 또는 차단한 경우) 알림을 표시합니다.</value>
</data>
<data name="Settings_Chat_NotifyPluginDisclosure_Name" xml:space="preserve">
<value>플러그인 전용 기호 전송 전 경고</value>
</data>
<data name="Settings_Chat_NotifyPluginDisclosure_Description" xml:space="preserve">
<value>보내려는 메시지에 HellionChat 또는 유사한 플러그인을 사용하는 플레이어에게만 올바르게 표시되는 기가 포함된 경우 경고를 표시합니다.</value>
</data>
<data name="Settings_Chat_WorldSuffix_Name" xml:space="preserve">
<value>서버 접미사</value>
</data>
<data name="Settings_Chat_WorldSuffix_Description" xml:space="preserve">
<value>채팅 로그에서 발신자 이름에 홈 서버를 추가할 시기.</value>
</data>
<data name="Settings_Chat_NameForm_Name" xml:space="preserve">
<value>이름 형식</value>
</data>
<data name="Settings_Chat_NameForm_Description" xml:space="preserve">
<value>채팅 로그에서 발신자 이름이 표시되는 방식. 기본값은 전체 이름입니다.</value>
</data>
<data name="NameDisplay_WorldSuffix_Never" xml:space="preserve">
<value>안 함</value>
</data>
<data name="NameDisplay_WorldSuffix_OtherWorldOnly" xml:space="preserve">
<value>다른 서버만</value>
</data>
<data name="NameDisplay_WorldSuffix_Always" xml:space="preserve">
<value>항상</value>
</data>
<data name="NameDisplay_NameForm_Full" xml:space="preserve">
<value>전체 이름</value>
</data>
<data name="NameDisplay_NameForm_FirstNameOnly" xml:space="preserve">
<value>이름만</value>
</data>
<data name="NameDisplay_NameForm_Initials" xml:space="preserve">
<value>이니셜</value>
</data>
<data name="Settings_General_CustomSoundVolume_Name" xml:space="preserve">
<value>사용자 지정 소리 볼륨</value>
</data>
<data name="Settings_General_CustomSoundVolume_Description" xml:space="preserve">
<value>세 가지 내장 사용자 지정 알림 소리의 재생 볼륨. 게임 16개 소에는 영향을 미치지 않습니다.</value>
</data>
<data name="Settings_ThemeAndLayout_WindowOpacityInactive_Name" xml:space="preserve">
<value>비활성 창 불투명도</value>
</data>
<data name="Settings_ThemeAndLayout_WindowOpacityInactive_Description" xml:space="preserve">
<value>포커스되지 않은 상태에서 메인 채팅 창의 배경 불투명도. 위의 슬라이더는 포커스된 값을 설정합니다. Dalamud 창 고정 메뉴의 창별 재정의가 우선합니다.</value>
</data>
<data name="Tabs_NotificationSound_Enable_Name" xml:space="preserve">
<value>알림 소리</value>
</data>
<data name="Tabs_NotificationSound_Description" xml:space="preserve">
<value>다른 탭을 보는 동안 이 탭에 메시지가 도착하면 소리를 재생합니다. 전역 소리 토글을 따릅니다.</value>
</data>
<data name="Tabs_NotificationSound_Option" xml:space="preserve">
<value>소리</value>
</data>
<data name="Tabs_NotificationSound_Preview" xml:space="preserve">
<value>선택한 소리 미리 듣기</value>
</data>
<data name="Tabs_NotificationSound_CustomOption" xml:space="preserve">
<value>Hellion 소리</value>
</data>
<data name="FailedTell_Notification_Generic" xml:space="preserve">
<value>귓속말을 전달하지 못했습니다.</value>
</data>
<data name="FailedTell_Notification_Named" xml:space="preserve">
<value>{0}에게 귓속말을 전달하지 못했습니다.</value>
</data>
<data name="ChatInput_PluginDisclosure_Warning" xml:space="preserve">
<value>이 메시지에는 다른 플레이어에게 빈 박스로 보일 수 있는 플러그인 전용 기호가 포함되어 있습니다. Enter를 다시 눌러 전송합니다.</value>
</data>
</root>
+195 -103
View File
@@ -12,9 +12,6 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Privacy_Tab_Title" xml:space="preserve">
<value>Personvern</value>
</data>
<data name="Privacy_FilterEnabled_Name" xml:space="preserve">
<value>Aktiver personvernfilter</value>
</data>
@@ -24,9 +21,6 @@
<data name="Privacy_FilterEnabled_StorageOnly_Help" xml:space="preserve">
<value>Filteret styrer kun hva som skrives til den lokale databasen. Chat-loggen viser fremdeles alle meldinger live. Ekskluderte kanaler lagres simpelthen ikke lenger. Vil du også fjerne kanaler fra den synlige visningen, bruker du de vanlige chat-fane-filtrene i spillet.</value>
</data>
<data name="Privacy_Filter_Tree_Heading" xml:space="preserve">
<value>Personvernfilter og hviteliste</value>
</data>
<data name="Privacy_Whitelist_Help" xml:space="preserve">
<value>Velg hvilke kanaler som lagres i den lokale databasen. Standard følger dataminimering: kun dine egne samtaler. Bruk knappene nedenfor for å bruke en forhåndsinnstilling.</value>
</data>
@@ -597,18 +591,6 @@
</data>
<!-- Hellion Chat — General tab section headings -->
<data name="Settings_General_Input_Heading" xml:space="preserve">
<value>Inndata</value>
</data>
<data name="Settings_General_Audio_Heading" xml:space="preserve">
<value>Lyd &amp; varsler</value>
</data>
<data name="Settings_General_Performance_Heading" xml:space="preserve">
<value>Ytelse</value>
</data>
<data name="Settings_General_Language_Heading" xml:space="preserve">
<value>Språk &amp; inndatahjelp</value>
</data>
<!-- Hellion Chat — Appearance tab section headings -->
<data name="Settings_Appearance_Theme_Heading" xml:space="preserve">
@@ -625,32 +607,11 @@
</data>
<!-- Hellion Chat — Window tab section headings -->
<data name="Settings_Window_Hide_Heading" xml:space="preserve">
<value>Skjuling</value>
</data>
<data name="Settings_Window_InactivityHide_Heading" xml:space="preserve">
<value>Skjuling ved inaktivitet</value>
</data>
<data name="Settings_Window_Frame_Heading" xml:space="preserve">
<value>Vindusramme</value>
</data>
<data name="Settings_Window_Tooltips_Heading" xml:space="preserve">
<value>Verktøytips</value>
</data>
<!-- Hellion Chat — Chat tab section headings -->
<data name="Settings_Chat_AutoTellTabs_Heading" xml:space="preserve">
<value>Auto-Tell-Tabs</value>
</data>
<data name="Settings_Chat_Behaviour_Heading" xml:space="preserve">
<value>Meldingsoppførsel</value>
</data>
<data name="Settings_Chat_Preview_Heading" xml:space="preserve">
<value>Forhåndsvisning</value>
</data>
<data name="Settings_Chat_Emotes_Heading" xml:space="preserve">
<value>Emotes</value>
</data>
<!-- Hellion Chat — Chat tab SymbolPicker -->
<data name="Settings_Chat_SymbolPicker_Enable_Name" xml:space="preserve">
@@ -672,15 +633,6 @@
</data>
<!-- Hellion Chat — Information tab section headings -->
<data name="Settings_Information_VersionInfo_Heading" xml:space="preserve">
<value>Versjonsinformasjon</value>
</data>
<data name="Settings_Information_About_Heading" xml:space="preserve">
<value>Om HellionChat</value>
</data>
<data name="Settings_Information_Changelog_Heading" xml:space="preserve">
<value>Changelog</value>
</data>
<!-- Hellion Chat — Default tab presets (channel-specific) -->
<data name="Tabs_Presets_System" xml:space="preserve">
@@ -811,12 +763,6 @@
<data name="Settings_Card_Tabs_Subtext" xml:space="preserve">
<value>Opprett og konfigurer egendefinerte chat-faner.</value>
</data>
<data name="Settings_Card_Privacy_Title" xml:space="preserve">
<value>Personvern</value>
</data>
<data name="Settings_Card_Privacy_Subtext" xml:space="preserve">
<value>Personvernfilter per kanal og hva som kan lagres.</value>
</data>
<data name="Settings_Card_Database_Title" xml:space="preserve">
<value>Database</value>
</data>
@@ -824,10 +770,10 @@
<value>Lagring, migrering, eldre opprydding</value>
</data>
<data name="Settings_Card_Information_Title" xml:space="preserve">
<value>Informasjon</value>
<value>Om</value>
</data>
<data name="Settings_Card_Information_Subtext" xml:space="preserve">
<value>Versjon, formål, lisens og changelog.</value>
<value>Utvidelser, versjon, prosjektinformasjon, oversettere og changelog.</value>
</data>
<data name="Settings_Tab_Themes" xml:space="preserve">
<value>Themes</value>
@@ -868,29 +814,11 @@
<data name="Appearance_UseCompactDensity_Description" xml:space="preserve">
<value>Bytter meldingsoppsettet fra standard kortrader tilbake til enkeltlinje `[HH:mm] Avsender: Tekst`-rader.</value>
</data>
<data name="Settings_Card_ThemeAndLayout_Title" xml:space="preserve">
<value>Theme &amp; Layout</value>
</data>
<data name="Settings_Card_ThemeAndLayout_Subtext" xml:space="preserve">
<value>Theme, vindusramme og tidsstempelstil.</value>
</data>
<data name="Settings_Card_FontsAndColours_Title" xml:space="preserve">
<value>Skrifttyper &amp; farger</value>
</data>
<data name="Settings_Card_FontsAndColours_Subtext" xml:space="preserve">
<value>Skrifttype, skriftstørrelse og chat-farger per kanal.</value>
</data>
<data name="Settings_Card_DataManagement_Title" xml:space="preserve">
<value>Databehandling</value>
<value>Data og personvern</value>
</data>
<data name="Settings_Card_DataManagement_Subtext" xml:space="preserve">
<value>Oppbevaring, opprydding, eksport og databasestatistikk.</value>
</data>
<data name="Settings_Card_Integrations_Title" xml:space="preserve">
<value>Integrasjoner</value>
</data>
<data name="Settings_Card_Integrations_Subtext" xml:space="preserve">
<value>Andre Dalamud-plugins som HellionChat samarbeider med. Kommende integrasjoner i forhåndsvisning.</value>
<value>Personvernfilter, oppbevaring, opprydding, eksport og databasestatistikk.</value>
</data>
<data name="Settings_ThemeAndLayout_Theme_Heading" xml:space="preserve">
<value>Theme</value>
@@ -907,39 +835,12 @@
<data name="Settings_ThemeAndLayout_WindowOpacity_Description" xml:space="preserve">
<value>Hvor gjennomsiktig vindusbakgrunnen er. Lavere verdier lar mer av spillet synes gjennom. Tips: Dalamud sin per-vindu-meny (hamburgermeny i tittellinjen) tilbyr per-vindu-overstyringer for opasitet, bakgrunnsuskarphet, klikk-gjennom og festing. Disse har forrang over denne skyveknappen for det respektive vinduet.</value>
</data>
<data name="Settings_FontsAndColours_Fonts_Heading" xml:space="preserve">
<value>Skrifttyper</value>
</data>
<data name="Settings_FontsAndColours_Colours_Heading" xml:space="preserve">
<value>Chat-farger</value>
</data>
<data name="Settings_DataManagement_Storage_Heading" xml:space="preserve">
<value>Lagring</value>
</data>
<data name="Settings_DataManagement_Retention_Heading" xml:space="preserve">
<value>Oppbevaring</value>
</data>
<data name="Settings_DataManagement_Cleanup_Heading" xml:space="preserve">
<value>Opprydding</value>
</data>
<data name="Settings_DataManagement_Export_Heading" xml:space="preserve">
<value>Eksport</value>
</data>
<data name="Settings_DataManagement_DbViewer_Heading" xml:space="preserve">
<value>Databasevisning</value>
</data>
<data name="Settings_DataManagement_Advanced_Heading" xml:space="preserve">
<value>Avansert (Shift+klikk for å åpne)</value>
</data>
<data name="Settings_Window_Frame_Behaviour_Heading" xml:space="preserve">
<value>Oppførsel</value>
</data>
<data name="Migration_v16_OverrideStyle_Toast" xml:space="preserve">
<value>Hellion Chat 1.2.1 har reorganisert innstillingsmenyen og fjernet det gamle "Overstyr stil"-alternativet (erstattet av theme-systemet fra 1.1.0). Øvrige innstillinger er uendret. Vindustransparens er migrert til "Theme &amp; Layout". En sikkerhetskopi av forrige konfig ligger under pluginConfigs/HellionChat.json.pre-v16-backup ved siden av den aktive HellionChat.json.</value>
</data>
<data name="Settings_Tab_Integrations" xml:space="preserve">
<value>Integrasjoner</value>
</data>
<data name="Settings_Integrations_Intro" xml:space="preserve">
<value>Plugin-integrasjoner lar HellionChat samarbeide med andre installerte Dalamud-plugins. Hver integrasjon oppdager automatisk målet sitt og deaktiverer seg stille når mål-pluginen mangler.</value>
</data>
@@ -1053,4 +954,195 @@
<value>Deaktiverer temaovergangen, hover-animasjoner for sidepanel og kort samt pulseringen av uleste faner. Temabytter og hover-tilstander brukes i stedet umiddelbart.</value>
<comment>AI-assisted machine translation. Pending native-speaker review.</comment>
</data>
<!-- Hellion Chat — Settings Overhaul section titles (v1.5.6) -->
<data name="Settings_Section_Input" xml:space="preserve">
<value>Input</value>
</data>
<data name="Settings_Section_Sound" xml:space="preserve">
<value>Lyd</value>
</data>
<data name="Settings_Section_Language" xml:space="preserve">
<value>Språk</value>
</data>
<data name="Settings_Section_Performance" xml:space="preserve">
<value>Ytelse</value>
</data>
<data name="Settings_Section_Sound_TabsHint" xml:space="preserve">
<value>Lyden som spilles per fane, angis i fanen Kanaler.</value>
</data>
<data name="Settings_Section_Theme" xml:space="preserve">
<value>Tema</value>
</data>
<data name="Settings_Section_Fonts" xml:space="preserve">
<value>Skrifter</value>
</data>
<data name="Settings_Section_Colours" xml:space="preserve">
<value>Farger</value>
</data>
<data name="Settings_Section_WindowStyle" xml:space="preserve">
<value>Vindusstil</value>
</data>
<data name="Settings_Section_Timestamps" xml:space="preserve">
<value>Tidsstempler</value>
</data>
<data name="Settings_Section_Animations" xml:space="preserve">
<value>Animasjoner</value>
</data>
<data name="Settings_Section_Messages" xml:space="preserve">
<value>Meldinger</value>
</data>
<data name="Settings_Section_InputPreview" xml:space="preserve">
<value>Input og forhåndsvisning</value>
</data>
<data name="Settings_Section_AutoTellTabs" xml:space="preserve">
<value>Automatiske tell-faner</value>
</data>
<data name="Settings_Section_Emotes" xml:space="preserve">
<value>Emotes</value>
</data>
<data name="Settings_Section_LinksTooltips" xml:space="preserve">
<value>Lenker og verktøytips</value>
</data>
<data name="Settings_Section_NoviceNetwork" xml:space="preserve">
<value>Nybegynnernettverk</value>
</data>
<data name="Settings_Section_Hide" xml:space="preserve">
<value>Skjul</value>
</data>
<data name="Settings_Section_InactivityHide" xml:space="preserve">
<value>Skjul ved inaktivitet</value>
</data>
<data name="Settings_Section_Frame" xml:space="preserve">
<value>Ramme</value>
</data>
<data name="Settings_Section_Tab_Channels" xml:space="preserve">
<value>Kanaler</value>
</data>
<data name="Settings_Section_Tab_Display" xml:space="preserve">
<value>Visning</value>
</data>
<data name="Settings_Section_Tab_Notification" xml:space="preserve">
<value>Varsling</value>
</data>
<data name="Settings_Section_Tab_Input" xml:space="preserve">
<value>Input</value>
</data>
<data name="Settings_Section_Tab_PopOut" xml:space="preserve">
<value>Utskilt vindu</value>
</data>
<data name="Settings_Section_Tab_Volume_AllTabsHint" xml:space="preserve">
<value>Denne lydstyrken gjelder for alle faner.</value>
</data>
<data name="Settings_Section_PrivacyFilter" xml:space="preserve">
<value>Personvernfilter</value>
</data>
<data name="Settings_Section_Storage" xml:space="preserve">
<value>Lagring</value>
</data>
<data name="Settings_Section_Retention" xml:space="preserve">
<value>Oppbevaring</value>
</data>
<data name="Settings_Section_Cleanup" xml:space="preserve">
<value>Opprydding</value>
</data>
<data name="Settings_Section_Export" xml:space="preserve">
<value>Eksport</value>
</data>
<data name="Settings_Section_Database" xml:space="preserve">
<value>Database</value>
</data>
<data name="Settings_Section_Extensions" xml:space="preserve">
<value>Utvidelser</value>
</data>
<data name="Settings_Section_PluginInfo" xml:space="preserve">
<value>Plugin-info</value>
</data>
<data name="Settings_Section_Project" xml:space="preserve">
<value>Prosjektet</value>
</data>
<data name="Settings_Section_Translators" xml:space="preserve">
<value>Oversettere</value>
</data>
<data name="Settings_Section_Changelog" xml:space="preserve">
<value>Endringslogg</value>
</data>
<data name="Settings_Chat_NotifyFailedTell_Name" xml:space="preserve">
<value>Varsle om mislykket tell</value>
</data>
<data name="Settings_Chat_NotifyFailedTell_Description" xml:space="preserve">
<value>Viser et toast-varsel når et tell du sendte ikke kunne leveres (mottakeren er offline, i en instans eller blokkerer deg).</value>
</data>
<data name="Settings_Chat_NotifyPluginDisclosure_Name" xml:space="preserve">
<value>Advar før sending av plugin-eksklusiv symboler</value>
</data>
<data name="Settings_Chat_NotifyPluginDisclosure_Description" xml:space="preserve">
<value>Viser en advarsel når en melding du er i ferd med å sende inneholder symboler som kun vises riktig for spillere som kjører HellionChat eller et lignende plugin.</value>
</data>
<data name="Settings_Chat_WorldSuffix_Name" xml:space="preserve">
<value>Verdenssuffiks</value>
</data>
<data name="Settings_Chat_WorldSuffix_Description" xml:space="preserve">
<value>Når hjemverdensnavnet legges til avsendernavnet i chattloggen.</value>
</data>
<data name="Settings_Chat_NameForm_Name" xml:space="preserve">
<value>Navneformat</value>
</data>
<data name="Settings_Chat_NameForm_Description" xml:space="preserve">
<value>Hvordan avsendernavn vises i chattloggen. Fullt navn er standard.</value>
</data>
<data name="NameDisplay_WorldSuffix_Never" xml:space="preserve">
<value>Aldri</value>
</data>
<data name="NameDisplay_WorldSuffix_OtherWorldOnly" xml:space="preserve">
<value>Kun andre verdener</value>
</data>
<data name="NameDisplay_WorldSuffix_Always" xml:space="preserve">
<value>Alltid</value>
</data>
<data name="NameDisplay_NameForm_Full" xml:space="preserve">
<value>Fullt navn</value>
</data>
<data name="NameDisplay_NameForm_FirstNameOnly" xml:space="preserve">
<value>Kun fornavn</value>
</data>
<data name="NameDisplay_NameForm_Initials" xml:space="preserve">
<value>Initialer</value>
</data>
<data name="Settings_General_CustomSoundVolume_Name" xml:space="preserve">
<value>Egendefinert lydstyrke</value>
</data>
<data name="Settings_General_CustomSoundVolume_Description" xml:space="preserve">
<value>Avspillingsstyrke for de tre medfølgende egendefinerte varselslydene. Påvirker ikke de 16 spillydene.</value>
</data>
<data name="Settings_ThemeAndLayout_WindowOpacityInactive_Name" xml:space="preserve">
<value>Inaktiv vinduopasitet</value>
</data>
<data name="Settings_ThemeAndLayout_WindowOpacityInactive_Description" xml:space="preserve">
<value>Bakgrunnsopasitet for det primære chattvinduet mens det ikke er i fokus. Glidebryteren over angir fokusert verdi. En overstyringsinnstilling per vindu i Dalamud-festmenyen har forrang fremfor begge.</value>
</data>
<data name="Tabs_NotificationSound_Enable_Name" xml:space="preserve">
<value>Varsellyd</value>
</data>
<data name="Tabs_NotificationSound_Description" xml:space="preserve">
<value>Spiller av en lyd når en melding ankommer denne fanen mens du ser på en annen fane. Respekterer den globale lydvekselen.</value>
</data>
<data name="Tabs_NotificationSound_Option" xml:space="preserve">
<value>Lyd</value>
</data>
<data name="Tabs_NotificationSound_Preview" xml:space="preserve">
<value>Forhåndsvis valgt lyd</value>
</data>
<data name="Tabs_NotificationSound_CustomOption" xml:space="preserve">
<value>Hellion-lyd</value>
</data>
<data name="FailedTell_Notification_Generic" xml:space="preserve">
<value>Et tell kunne ikke leveres.</value>
</data>
<data name="FailedTell_Notification_Named" xml:space="preserve">
<value>Tell til {0} kunne ikke leveres.</value>
</data>
<data name="ChatInput_PluginDisclosure_Warning" xml:space="preserve">
<value>Denne meldingen inneholder plugin-eksklusive symboler som andre spillere kanskje ser som tomme bokser. Trykk Enter igjen for å sende likevel.</value>
</data>
</root>
+195 -103
View File
@@ -12,9 +12,6 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Privacy_Tab_Title" xml:space="preserve">
<value>Privacy</value>
</data>
<data name="Privacy_FilterEnabled_Name" xml:space="preserve">
<value>Privacyfilter inschakelen</value>
</data>
@@ -24,9 +21,6 @@
<data name="Privacy_FilterEnabled_StorageOnly_Help" xml:space="preserve">
<value>Het filter bepaalt alleen wat er in de lokale database wordt geschreven. In het chatlogboek zie je nog steeds elk bericht live; uitgesloten kanalen worden gewoon niet meer opgeslagen. Als je kanalen ook uit de zichtbare weergave wilt verwijderen, gebruik dan de normale chat-tabfilters in het spel.</value>
</data>
<data name="Privacy_Filter_Tree_Heading" xml:space="preserve">
<value>Privacyfilter en whitelist</value>
</data>
<data name="Privacy_Whitelist_Help" xml:space="preserve">
<value>Kies welke kanalen worden opgeslagen in de lokale database. Standaard volgt dataminimalisatie: alleen je eigen gesprekken. Gebruik de knoppen hieronder om een voorinstelling toe te passen.</value>
</data>
@@ -597,18 +591,6 @@
</data>
<!-- Hellion Chat — General tab section headings -->
<data name="Settings_General_Input_Heading" xml:space="preserve">
<value>Invoer</value>
</data>
<data name="Settings_General_Audio_Heading" xml:space="preserve">
<value>Audio &amp; meldingen</value>
</data>
<data name="Settings_General_Performance_Heading" xml:space="preserve">
<value>Prestaties</value>
</data>
<data name="Settings_General_Language_Heading" xml:space="preserve">
<value>Taal &amp; invoerhulpmiddelen</value>
</data>
<!-- Hellion Chat — Appearance tab section headings -->
<data name="Settings_Appearance_Theme_Heading" xml:space="preserve">
@@ -625,32 +607,11 @@
</data>
<!-- Hellion Chat — Window tab section headings -->
<data name="Settings_Window_Hide_Heading" xml:space="preserve">
<value>Verbergen</value>
</data>
<data name="Settings_Window_InactivityHide_Heading" xml:space="preserve">
<value>Verbergen bij inactiviteit</value>
</data>
<data name="Settings_Window_Frame_Heading" xml:space="preserve">
<value>Vensterkader</value>
</data>
<data name="Settings_Window_Tooltips_Heading" xml:space="preserve">
<value>Tooltips</value>
</data>
<!-- Hellion Chat — Chat tab section headings -->
<data name="Settings_Chat_AutoTellTabs_Heading" xml:space="preserve">
<value>Auto-Tell-Tabs</value>
</data>
<data name="Settings_Chat_Behaviour_Heading" xml:space="preserve">
<value>Berichtgedrag</value>
</data>
<data name="Settings_Chat_Preview_Heading" xml:space="preserve">
<value>Voorbeeld</value>
</data>
<data name="Settings_Chat_Emotes_Heading" xml:space="preserve">
<value>Emotes</value>
</data>
<!-- Hellion Chat — Chat tab SymbolPicker -->
<data name="Settings_Chat_SymbolPicker_Enable_Name" xml:space="preserve">
@@ -672,15 +633,6 @@
</data>
<!-- Hellion Chat — Information tab section headings -->
<data name="Settings_Information_VersionInfo_Heading" xml:space="preserve">
<value>Versie-informatie</value>
</data>
<data name="Settings_Information_About_Heading" xml:space="preserve">
<value>Over HellionChat</value>
</data>
<data name="Settings_Information_Changelog_Heading" xml:space="preserve">
<value>Changelog</value>
</data>
<!-- Hellion Chat — Default tab presets (channel-specific) -->
<data name="Tabs_Presets_System" xml:space="preserve">
@@ -811,12 +763,6 @@
<data name="Settings_Card_Tabs_Subtext" xml:space="preserve">
<value>Aangepaste chattabbladen aanmaken en configureren.</value>
</data>
<data name="Settings_Card_Privacy_Title" xml:space="preserve">
<value>Privacy</value>
</data>
<data name="Settings_Card_Privacy_Subtext" xml:space="preserve">
<value>Privacyfilter per kanaal en wat er opgeslagen mag worden.</value>
</data>
<data name="Settings_Card_Database_Title" xml:space="preserve">
<value>Database</value>
</data>
@@ -824,10 +770,10 @@
<value>Opslag, migratie, verouderde opschoning</value>
</data>
<data name="Settings_Card_Information_Title" xml:space="preserve">
<value>Informatie</value>
<value>Over</value>
</data>
<data name="Settings_Card_Information_Subtext" xml:space="preserve">
<value>Versie, missie, licentie en changelog.</value>
<value>Extensies, versie, projectinformatie, vertalers en changelog.</value>
</data>
<data name="Settings_Tab_Themes" xml:space="preserve">
<value>Themes</value>
@@ -868,29 +814,11 @@
<data name="Appearance_UseCompactDensity_Description" xml:space="preserve">
<value>Schakelt de berichtweergave terug van de standaard kaartindeling naar enkelvoudige regels `[HH:mm] Afzender: Tekst`.</value>
</data>
<data name="Settings_Card_ThemeAndLayout_Title" xml:space="preserve">
<value>Theme &amp; Layout</value>
</data>
<data name="Settings_Card_ThemeAndLayout_Subtext" xml:space="preserve">
<value>Theme, vensterkader en tijdstempelstijl.</value>
</data>
<data name="Settings_Card_FontsAndColours_Title" xml:space="preserve">
<value>Lettertypen &amp; Kleuren</value>
</data>
<data name="Settings_Card_FontsAndColours_Subtext" xml:space="preserve">
<value>Lettertype, lettergrootte en chatkleuren per kanaal.</value>
</data>
<data name="Settings_Card_DataManagement_Title" xml:space="preserve">
<value>Gegevensbeheer</value>
<value>Gegevens en privacy</value>
</data>
<data name="Settings_Card_DataManagement_Subtext" xml:space="preserve">
<value>Retentie, opschoning, export en databasestatistieken.</value>
</data>
<data name="Settings_Card_Integrations_Title" xml:space="preserve">
<value>Integraties</value>
</data>
<data name="Settings_Card_Integrations_Subtext" xml:space="preserve">
<value>Andere Dalamud-plugins waarmee HellionChat samenwerkt. Aankomende integraties als voorbeeld.</value>
<value>Privacyfilter, retentie, opschoning, export en databasestatistieken.</value>
</data>
<data name="Settings_ThemeAndLayout_Theme_Heading" xml:space="preserve">
<value>Theme</value>
@@ -907,39 +835,12 @@
<data name="Settings_ThemeAndLayout_WindowOpacity_Description" xml:space="preserve">
<value>Hoe transparant de vensterachtergrond is. Lagere waarden laten meer van het spel doorschijnen. Tip: het Dalamud per-venstermenu (hamburger in de titelbalk) biedt per venster eigen instellingen voor dekking, achtergrondvervaging, klikdoorloop en vastpinnen: die hebben voorrang op deze schuifregelaar voor het betreffende venster.</value>
</data>
<data name="Settings_FontsAndColours_Fonts_Heading" xml:space="preserve">
<value>Lettertypen</value>
</data>
<data name="Settings_FontsAndColours_Colours_Heading" xml:space="preserve">
<value>Chatkleuren</value>
</data>
<data name="Settings_DataManagement_Storage_Heading" xml:space="preserve">
<value>Opslag</value>
</data>
<data name="Settings_DataManagement_Retention_Heading" xml:space="preserve">
<value>Retentie</value>
</data>
<data name="Settings_DataManagement_Cleanup_Heading" xml:space="preserve">
<value>Opschoning</value>
</data>
<data name="Settings_DataManagement_Export_Heading" xml:space="preserve">
<value>Export</value>
</data>
<data name="Settings_DataManagement_DbViewer_Heading" xml:space="preserve">
<value>Databaseviewer</value>
</data>
<data name="Settings_DataManagement_Advanced_Heading" xml:space="preserve">
<value>Geavanceerd (Shift+klik om te openen)</value>
</data>
<data name="Settings_Window_Frame_Behaviour_Heading" xml:space="preserve">
<value>Gedrag</value>
</data>
<data name="Migration_v16_OverrideStyle_Toast" xml:space="preserve">
<value>Hellion Chat 1.2.1 heeft het instellingenmenu opnieuw ingedeeld en de oude optie "Stijl overschrijven" verwijderd (vervangen door het themasysteem uit 1.1.0). Je overige instellingen zijn ongewijzigd. Venstertransparantie is verplaatst naar "Theme &amp; Layout". Een back-up van de vorige configuratie staat bij pluginConfigs/HellionChat.json.pre-v16-backup naast de actieve HellionChat.json.</value>
</data>
<data name="Settings_Tab_Integrations" xml:space="preserve">
<value>Integraties</value>
</data>
<data name="Settings_Integrations_Intro" xml:space="preserve">
<value>Plugin-integraties laten HellionChat samenwerken met andere geïnstalleerde Dalamud-plugins. Elke integratie detecteert automatisch zijn doelplugin en schakelt zichzelf stil uit als die ontbreekt.</value>
</data>
@@ -1054,4 +955,195 @@
<value>Schakelt de themaovergang, de hover-animaties van de zijbalk en kaarten, en het pulseren van ongelezen tabbladen uit. Themawissels en hover-statussen worden in plaats daarvan direct toegepast.</value>
<comment>AI-assisted machine translation. Pending native-speaker review.</comment>
</data>
<!-- Hellion Chat — Settings Overhaul section titles (v1.5.6) -->
<data name="Settings_Section_Input" xml:space="preserve">
<value>Invoer</value>
</data>
<data name="Settings_Section_Sound" xml:space="preserve">
<value>Geluid</value>
</data>
<data name="Settings_Section_Language" xml:space="preserve">
<value>Taal</value>
</data>
<data name="Settings_Section_Performance" xml:space="preserve">
<value>Prestaties</value>
</data>
<data name="Settings_Section_Sound_TabsHint" xml:space="preserve">
<value>Welk geluid per tabblad speelt, wordt ingesteld in het tabblad Kanalen.</value>
</data>
<data name="Settings_Section_Theme" xml:space="preserve">
<value>Thema</value>
</data>
<data name="Settings_Section_Fonts" xml:space="preserve">
<value>Lettertypen</value>
</data>
<data name="Settings_Section_Colours" xml:space="preserve">
<value>Kleuren</value>
</data>
<data name="Settings_Section_WindowStyle" xml:space="preserve">
<value>Vensterstijl</value>
</data>
<data name="Settings_Section_Timestamps" xml:space="preserve">
<value>Tijdstempels</value>
</data>
<data name="Settings_Section_Animations" xml:space="preserve">
<value>Animaties</value>
</data>
<data name="Settings_Section_Messages" xml:space="preserve">
<value>Berichten</value>
</data>
<data name="Settings_Section_InputPreview" xml:space="preserve">
<value>Invoer en voorbeeld</value>
</data>
<data name="Settings_Section_AutoTellTabs" xml:space="preserve">
<value>Automatische tell-tabbladen</value>
</data>
<data name="Settings_Section_Emotes" xml:space="preserve">
<value>Emotes</value>
</data>
<data name="Settings_Section_LinksTooltips" xml:space="preserve">
<value>Links en tooltips</value>
</data>
<data name="Settings_Section_NoviceNetwork" xml:space="preserve">
<value>Beginners netwerk</value>
</data>
<data name="Settings_Section_Hide" xml:space="preserve">
<value>Verbergen</value>
</data>
<data name="Settings_Section_InactivityHide" xml:space="preserve">
<value>Verbergen bij inactiviteit</value>
</data>
<data name="Settings_Section_Frame" xml:space="preserve">
<value>Kader</value>
</data>
<data name="Settings_Section_Tab_Channels" xml:space="preserve">
<value>Kanalen</value>
</data>
<data name="Settings_Section_Tab_Display" xml:space="preserve">
<value>Weergave</value>
</data>
<data name="Settings_Section_Tab_Notification" xml:space="preserve">
<value>Melding</value>
</data>
<data name="Settings_Section_Tab_Input" xml:space="preserve">
<value>Invoer</value>
</data>
<data name="Settings_Section_Tab_PopOut" xml:space="preserve">
<value>Pop-outvenster</value>
</data>
<data name="Settings_Section_Tab_Volume_AllTabsHint" xml:space="preserve">
<value>Dit volume geldt voor alle tabbladen.</value>
</data>
<data name="Settings_Section_PrivacyFilter" xml:space="preserve">
<value>Privacyfilter</value>
</data>
<data name="Settings_Section_Storage" xml:space="preserve">
<value>Opslag</value>
</data>
<data name="Settings_Section_Retention" xml:space="preserve">
<value>Bewaring</value>
</data>
<data name="Settings_Section_Cleanup" xml:space="preserve">
<value>Opruimen</value>
</data>
<data name="Settings_Section_Export" xml:space="preserve">
<value>Exporteren</value>
</data>
<data name="Settings_Section_Database" xml:space="preserve">
<value>Database</value>
</data>
<data name="Settings_Section_Extensions" xml:space="preserve">
<value>Extensies</value>
</data>
<data name="Settings_Section_PluginInfo" xml:space="preserve">
<value>Plugin-info</value>
</data>
<data name="Settings_Section_Project" xml:space="preserve">
<value>Het project</value>
</data>
<data name="Settings_Section_Translators" xml:space="preserve">
<value>Vertalers</value>
</data>
<data name="Settings_Section_Changelog" xml:space="preserve">
<value>Wijzigingenlog</value>
</data>
<data name="Settings_Chat_NotifyFailedTell_Name" xml:space="preserve">
<value>Melden bij mislukte tell</value>
</data>
<data name="Settings_Chat_NotifyFailedTell_Description" xml:space="preserve">
<value>Toont een melding wanneer een tell die je stuurde niet kon worden bezorgd (ontvanger offline, in een instantie of blokkeert je).</value>
</data>
<data name="Settings_Chat_NotifyPluginDisclosure_Name" xml:space="preserve">
<value>Waarschuwen voor verzenden van plugin-exclusieve symbolen</value>
</data>
<data name="Settings_Chat_NotifyPluginDisclosure_Description" xml:space="preserve">
<value>Toont een waarschuwing wanneer een bericht dat je op het punt staat te verzenden symbolen bevat die alleen correct worden weergegeven voor spelers die HellionChat of een vergelijkbare plugin gebruiken.</value>
</data>
<data name="Settings_Chat_WorldSuffix_Name" xml:space="preserve">
<value>Wereldachtervoegsel</value>
</data>
<data name="Settings_Chat_WorldSuffix_Description" xml:space="preserve">
<value>Wanneer de thuiswereld wordt toegevoegd aan de naam van de afzender in het chatlogboek.</value>
</data>
<data name="Settings_Chat_NameForm_Name" xml:space="preserve">
<value>Naamformaat</value>
</data>
<data name="Settings_Chat_NameForm_Description" xml:space="preserve">
<value>Hoe afzendernamen worden weergegeven in het chatlogboek. De volledige naam is de standaard.</value>
</data>
<data name="NameDisplay_WorldSuffix_Never" xml:space="preserve">
<value>Nooit</value>
</data>
<data name="NameDisplay_WorldSuffix_OtherWorldOnly" xml:space="preserve">
<value>Alleen andere werelden</value>
</data>
<data name="NameDisplay_WorldSuffix_Always" xml:space="preserve">
<value>Altijd</value>
</data>
<data name="NameDisplay_NameForm_Full" xml:space="preserve">
<value>Volledige naam</value>
</data>
<data name="NameDisplay_NameForm_FirstNameOnly" xml:space="preserve">
<value>Alleen voornaam</value>
</data>
<data name="NameDisplay_NameForm_Initials" xml:space="preserve">
<value>Initialen</value>
</data>
<data name="Settings_General_CustomSoundVolume_Name" xml:space="preserve">
<value>Aangepast geluidsvolume</value>
</data>
<data name="Settings_General_CustomSoundVolume_Description" xml:space="preserve">
<value>Afspeelvolume voor de drie meegeleverde aangepaste meldingsgeluiden. Heeft geen invloed op de 16 spelgeluiden.</value>
</data>
<data name="Settings_ThemeAndLayout_WindowOpacityInactive_Name" xml:space="preserve">
<value>Inactieve vensteropaciteit</value>
</data>
<data name="Settings_ThemeAndLayout_WindowOpacityInactive_Description" xml:space="preserve">
<value>Achtergrondopaciteit van het hoofdchatvenster terwijl het niet gefocust is. De schuifregelaar hierboven stelt de gefocuste waarde in. Een vensterspecifieke overschrijving in het Dalamud-pinningsmenu heeft voorrang boven beide.</value>
</data>
<data name="Tabs_NotificationSound_Enable_Name" xml:space="preserve">
<value>Meldingsgeluid</value>
</data>
<data name="Tabs_NotificationSound_Description" xml:space="preserve">
<value>Speelt een geluid af wanneer een bericht in dit tabblad aankomt terwijl je naar een ander tabblad kijkt. Respecteert de globale geluidsschakelaar.</value>
</data>
<data name="Tabs_NotificationSound_Option" xml:space="preserve">
<value>Geluid</value>
</data>
<data name="Tabs_NotificationSound_Preview" xml:space="preserve">
<value>Voorbeeld van het geselecteerde geluid</value>
</data>
<data name="Tabs_NotificationSound_CustomOption" xml:space="preserve">
<value>Hellion-geluid</value>
</data>
<data name="FailedTell_Notification_Generic" xml:space="preserve">
<value>Een tell kon niet worden bezorgd.</value>
</data>
<data name="FailedTell_Notification_Named" xml:space="preserve">
<value>Tell aan {0} kon niet worden bezorgd.</value>
</data>
<data name="ChatInput_PluginDisclosure_Warning" xml:space="preserve">
<value>Dit bericht bevat plugin-exclusieve symbolen die andere spelers mogelijk als lege vakjes zien. Druk opnieuw op Enter om toch te verzenden.</value>
</data>
</root>
+195 -103
View File
@@ -12,9 +12,6 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Privacy_Tab_Title" xml:space="preserve">
<value>Prywatność</value>
</data>
<data name="Privacy_FilterEnabled_Name" xml:space="preserve">
<value>Włącz filtr prywatności</value>
</data>
@@ -24,9 +21,6 @@
<data name="Privacy_FilterEnabled_StorageOnly_Help" xml:space="preserve">
<value>Filtr kontroluje wyłącznie to, co trafia do lokalnej bazy danych. W logu czatu nadal widzisz każdą wiadomość na żywo; wykluczone kanały są po prostu przestają być zapisywane. Jeśli chcesz też usunąć kanały z widocznego widoku, użyj standardowych filtrów zakładek czatu w grze.</value>
</data>
<data name="Privacy_Filter_Tree_Heading" xml:space="preserve">
<value>Filtr prywatności i lista dozwolonych</value>
</data>
<data name="Privacy_Whitelist_Help" xml:space="preserve">
<value>Wybierz, które kanały są zapisywane do lokalnej bazy danych. Domyślnie stosowana jest minimalizacja danych: tylko twoje własne rozmowy. Użyj przycisków poniżej, aby zastosować gotowe ustawienie.</value>
</data>
@@ -597,18 +591,6 @@
</data>
<!-- Hellion Chat — General tab section headings -->
<data name="Settings_General_Input_Heading" xml:space="preserve">
<value>Wprowadzanie</value>
</data>
<data name="Settings_General_Audio_Heading" xml:space="preserve">
<value>Audio &amp; powiadomienia</value>
</data>
<data name="Settings_General_Performance_Heading" xml:space="preserve">
<value>Wydajność</value>
</data>
<data name="Settings_General_Language_Heading" xml:space="preserve">
<value>Język &amp; pomoce wprowadzania</value>
</data>
<!-- Hellion Chat — Appearance tab section headings -->
<data name="Settings_Appearance_Theme_Heading" xml:space="preserve">
@@ -625,32 +607,11 @@
</data>
<!-- Hellion Chat — Window tab section headings -->
<data name="Settings_Window_Hide_Heading" xml:space="preserve">
<value>Ukrywanie</value>
</data>
<data name="Settings_Window_InactivityHide_Heading" xml:space="preserve">
<value>Ukrywanie przy braku aktywności</value>
</data>
<data name="Settings_Window_Frame_Heading" xml:space="preserve">
<value>Ramka okna</value>
</data>
<data name="Settings_Window_Tooltips_Heading" xml:space="preserve">
<value>Podpowiedzi</value>
</data>
<!-- Hellion Chat — Chat tab section headings -->
<data name="Settings_Chat_AutoTellTabs_Heading" xml:space="preserve">
<value>Auto-Tell-Tabs</value>
</data>
<data name="Settings_Chat_Behaviour_Heading" xml:space="preserve">
<value>Zachowanie wiadomości</value>
</data>
<data name="Settings_Chat_Preview_Heading" xml:space="preserve">
<value>Podgląd</value>
</data>
<data name="Settings_Chat_Emotes_Heading" xml:space="preserve">
<value>Emoty</value>
</data>
<!-- Hellion Chat — Chat tab SymbolPicker -->
<data name="Settings_Chat_SymbolPicker_Enable_Name" xml:space="preserve">
@@ -672,15 +633,6 @@
</data>
<!-- Hellion Chat — Information tab section headings -->
<data name="Settings_Information_VersionInfo_Heading" xml:space="preserve">
<value>Informacje o wersji</value>
</data>
<data name="Settings_Information_About_Heading" xml:space="preserve">
<value>O HellionChat</value>
</data>
<data name="Settings_Information_Changelog_Heading" xml:space="preserve">
<value>Changelog</value>
</data>
<!-- Hellion Chat — Default tab presets (channel-specific) -->
<data name="Tabs_Presets_System" xml:space="preserve">
@@ -811,12 +763,6 @@
<data name="Settings_Card_Tabs_Subtext" xml:space="preserve">
<value>Twórz i konfiguruj niestandardowe zakładki czatu.</value>
</data>
<data name="Settings_Card_Privacy_Title" xml:space="preserve">
<value>Prywatność</value>
</data>
<data name="Settings_Card_Privacy_Subtext" xml:space="preserve">
<value>Filtr prywatności według kanałów i co może być zapisywane.</value>
</data>
<data name="Settings_Card_Database_Title" xml:space="preserve">
<value>Baza danych</value>
</data>
@@ -824,10 +770,10 @@
<value>Przechowywanie, migracja, stare czyszczenie</value>
</data>
<data name="Settings_Card_Information_Title" xml:space="preserve">
<value>Informacje</value>
<value>O wtyczce</value>
</data>
<data name="Settings_Card_Information_Subtext" xml:space="preserve">
<value>Wersja, misja, licencja i changelog.</value>
<value>Rozszerzenia, wersja, informacje o projekcie, tłumacze i changelog.</value>
</data>
<data name="Settings_Tab_Themes" xml:space="preserve">
<value>Motywy</value>
@@ -868,29 +814,11 @@
<data name="Appearance_UseCompactDensity_Description" xml:space="preserve">
<value>Przełącza układ wiadomości z domyślnego widoku kart z powrotem na jednoliniowe wiersze `[HH:mm] Nadawca: Tekst`.</value>
</data>
<data name="Settings_Card_ThemeAndLayout_Title" xml:space="preserve">
<value>Theme &amp; Layout</value>
</data>
<data name="Settings_Card_ThemeAndLayout_Subtext" xml:space="preserve">
<value>Motyw, ramka okna i styl znaczników czasu.</value>
</data>
<data name="Settings_Card_FontsAndColours_Title" xml:space="preserve">
<value>Czcionki &amp; Kolory</value>
</data>
<data name="Settings_Card_FontsAndColours_Subtext" xml:space="preserve">
<value>Czcionka, rozmiar czcionki i kolory czatu według kanałów.</value>
</data>
<data name="Settings_Card_DataManagement_Title" xml:space="preserve">
<value>Zarządzanie danymi</value>
<value>Dane i prywatność</value>
</data>
<data name="Settings_Card_DataManagement_Subtext" xml:space="preserve">
<value>Przechowywanie, czyszczenie, eksport i statystyki bazy danych.</value>
</data>
<data name="Settings_Card_Integrations_Title" xml:space="preserve">
<value>Integracje</value>
</data>
<data name="Settings_Card_Integrations_Subtext" xml:space="preserve">
<value>Inne pluginy Dalamud, z którymi współpracuje HellionChat. Nadchodzące integracje w podglądzie.</value>
<value>Filtr prywatności, przechowywanie, czyszczenie, eksport i statystyki bazy danych.</value>
</data>
<data name="Settings_ThemeAndLayout_Theme_Heading" xml:space="preserve">
<value>Theme</value>
@@ -907,39 +835,12 @@
<data name="Settings_ThemeAndLayout_WindowOpacity_Description" xml:space="preserve">
<value>Stopień przezroczystości tła okna. Niższe wartości pozwalają przeświecać większej części gry. Wskazówka: menu Dalamud dla każdego okna (hamburger na pasku tytułu) oferuje indywidualne ustawienia przezroczystości, rozmycia tła, klikania przez okno i przypinania dla każdego okna: mają one pierwszeństwo przed tym suwakiem dla danego okna.</value>
</data>
<data name="Settings_FontsAndColours_Fonts_Heading" xml:space="preserve">
<value>Czcionki</value>
</data>
<data name="Settings_FontsAndColours_Colours_Heading" xml:space="preserve">
<value>Kolory czatu</value>
</data>
<data name="Settings_DataManagement_Storage_Heading" xml:space="preserve">
<value>Przechowywanie</value>
</data>
<data name="Settings_DataManagement_Retention_Heading" xml:space="preserve">
<value>Retencja</value>
</data>
<data name="Settings_DataManagement_Cleanup_Heading" xml:space="preserve">
<value>Czyszczenie</value>
</data>
<data name="Settings_DataManagement_Export_Heading" xml:space="preserve">
<value>Eksport</value>
</data>
<data name="Settings_DataManagement_DbViewer_Heading" xml:space="preserve">
<value>Przeglądarka bazy danych</value>
</data>
<data name="Settings_DataManagement_Advanced_Heading" xml:space="preserve">
<value>Zaawansowane (Shift+kliknięcie, aby otworzyć)</value>
</data>
<data name="Settings_Window_Frame_Behaviour_Heading" xml:space="preserve">
<value>Zachowanie</value>
</data>
<data name="Migration_v16_OverrideStyle_Toast" xml:space="preserve">
<value>Hellion Chat 1.2.1 przeorganizował menu ustawień i usunął starą opcję „Override style" (zastąpioną przez system motywów z wersji 1.1.0). Pozostałe ustawienia pozostają bez zmian. Przezroczystość okna została przeniesiona do „Theme &amp; Layout". Kopia zapasowa poprzedniej konfiguracji znajduje się w pluginConfigs/HellionChat.json.pre-v16-backup obok aktywnego HellionChat.json.</value>
</data>
<data name="Settings_Tab_Integrations" xml:space="preserve">
<value>Integracje</value>
</data>
<data name="Settings_Integrations_Intro" xml:space="preserve">
<value>Integracje z pluginami pozwalają HellionChat współpracować z innymi zainstalowanymi pluginami Dalamud. Każda integracja automatycznie wykrywa swój cel i cicho się wyłącza, gdy docelowy plugin jest niedostępny.</value>
</data>
@@ -1053,4 +954,195 @@
<value>Wyłącza płynne przejścia motywów, animacje najechania kursorem na pasek boczny i karty oraz pulsowanie nieprzeczytanych kart. Zmiany motywu i stany najechania są wtedy stosowane natychmiast.</value>
<comment>AI-assisted machine translation. Pending native-speaker review.</comment>
</data>
<!-- Hellion Chat — Settings Overhaul section titles (v1.5.6) -->
<data name="Settings_Section_Input" xml:space="preserve">
<value>Wejście</value>
</data>
<data name="Settings_Section_Sound" xml:space="preserve">
<value>Dźwięk</value>
</data>
<data name="Settings_Section_Language" xml:space="preserve">
<value>Język</value>
</data>
<data name="Settings_Section_Performance" xml:space="preserve">
<value>Wydajność</value>
</data>
<data name="Settings_Section_Sound_TabsHint" xml:space="preserve">
<value>Dźwięk odtwarzany na każdej karcie ustawia się w karcie Kanały.</value>
</data>
<data name="Settings_Section_Theme" xml:space="preserve">
<value>Motyw</value>
</data>
<data name="Settings_Section_Fonts" xml:space="preserve">
<value>Czcionki</value>
</data>
<data name="Settings_Section_Colours" xml:space="preserve">
<value>Kolory</value>
</data>
<data name="Settings_Section_WindowStyle" xml:space="preserve">
<value>Styl okna</value>
</data>
<data name="Settings_Section_Timestamps" xml:space="preserve">
<value>Znaczniki czasu</value>
</data>
<data name="Settings_Section_Animations" xml:space="preserve">
<value>Animacje</value>
</data>
<data name="Settings_Section_Messages" xml:space="preserve">
<value>Wiadomości</value>
</data>
<data name="Settings_Section_InputPreview" xml:space="preserve">
<value>Wejście i podgląd</value>
</data>
<data name="Settings_Section_AutoTellTabs" xml:space="preserve">
<value>Automatyczne karty tell</value>
</data>
<data name="Settings_Section_Emotes" xml:space="preserve">
<value>Emotki</value>
</data>
<data name="Settings_Section_LinksTooltips" xml:space="preserve">
<value>Linki i podpowiedzi</value>
</data>
<data name="Settings_Section_NoviceNetwork" xml:space="preserve">
<value>Sieć nowicjuszy</value>
</data>
<data name="Settings_Section_Hide" xml:space="preserve">
<value>Ukryj</value>
</data>
<data name="Settings_Section_InactivityHide" xml:space="preserve">
<value>Ukryj przy bezczynności</value>
</data>
<data name="Settings_Section_Frame" xml:space="preserve">
<value>Ramka</value>
</data>
<data name="Settings_Section_Tab_Channels" xml:space="preserve">
<value>Kanały</value>
</data>
<data name="Settings_Section_Tab_Display" xml:space="preserve">
<value>Wyświetlanie</value>
</data>
<data name="Settings_Section_Tab_Notification" xml:space="preserve">
<value>Powiadomienie</value>
</data>
<data name="Settings_Section_Tab_Input" xml:space="preserve">
<value>Wejście</value>
</data>
<data name="Settings_Section_Tab_PopOut" xml:space="preserve">
<value>Okno wyskakujące</value>
</data>
<data name="Settings_Section_Tab_Volume_AllTabsHint" xml:space="preserve">
<value>Ta głośność dotyczy wszystkich kart.</value>
</data>
<data name="Settings_Section_PrivacyFilter" xml:space="preserve">
<value>Filtr prywatności</value>
</data>
<data name="Settings_Section_Storage" xml:space="preserve">
<value>Przechowywanie</value>
</data>
<data name="Settings_Section_Retention" xml:space="preserve">
<value>Przechowywanie</value>
</data>
<data name="Settings_Section_Cleanup" xml:space="preserve">
<value>Czyszczenie</value>
</data>
<data name="Settings_Section_Export" xml:space="preserve">
<value>Eksport</value>
</data>
<data name="Settings_Section_Database" xml:space="preserve">
<value>Baza danych</value>
</data>
<data name="Settings_Section_Extensions" xml:space="preserve">
<value>Rozszerzenia</value>
</data>
<data name="Settings_Section_PluginInfo" xml:space="preserve">
<value>Informacje o wtyczce</value>
</data>
<data name="Settings_Section_Project" xml:space="preserve">
<value>Projekt</value>
</data>
<data name="Settings_Section_Translators" xml:space="preserve">
<value>Tłumacze</value>
</data>
<data name="Settings_Section_Changelog" xml:space="preserve">
<value>Dziennik zmian</value>
</data>
<data name="Settings_Chat_NotifyFailedTell_Name" xml:space="preserve">
<value>Powiadamiaj o nieudanym tell</value>
</data>
<data name="Settings_Chat_NotifyFailedTell_Description" xml:space="preserve">
<value>Wyświetla powiadomienie, gdy wysłany przez ciebie tell nie mógł zostać dostarczony (odbiorca offline, w instancji lub cię zablokował).</value>
</data>
<data name="Settings_Chat_NotifyPluginDisclosure_Name" xml:space="preserve">
<value>Ostrzeżenie przed wysłaniem symboli tylko dla wtyczki</value>
</data>
<data name="Settings_Chat_NotifyPluginDisclosure_Description" xml:space="preserve">
<value>Wyświetla ostrzeżenie, gdy wiadomość, którą zamierzasz wysłać, zawiera symbole widoczne poprawnie tylko dla graczy korzystających z HellionChat lub podobnej wtyczki.</value>
</data>
<data name="Settings_Chat_WorldSuffix_Name" xml:space="preserve">
<value>Sufiks świata</value>
</data>
<data name="Settings_Chat_WorldSuffix_Description" xml:space="preserve">
<value>Kiedy dodawać nazwę macierzystego świata do nazwy nadawcy w dzienniku czatu.</value>
</data>
<data name="Settings_Chat_NameForm_Name" xml:space="preserve">
<value>Format nazwy</value>
</data>
<data name="Settings_Chat_NameForm_Description" xml:space="preserve">
<value>Jak nazwy nadawców są wyświetlane w dzienniku czatu. Pełna nazwa jest domyślna.</value>
</data>
<data name="NameDisplay_WorldSuffix_Never" xml:space="preserve">
<value>Nigdy</value>
</data>
<data name="NameDisplay_WorldSuffix_OtherWorldOnly" xml:space="preserve">
<value>Tylko inne światy</value>
</data>
<data name="NameDisplay_WorldSuffix_Always" xml:space="preserve">
<value>Zawsze</value>
</data>
<data name="NameDisplay_NameForm_Full" xml:space="preserve">
<value>Pełna nazwa</value>
</data>
<data name="NameDisplay_NameForm_FirstNameOnly" xml:space="preserve">
<value>Tylko imię</value>
</data>
<data name="NameDisplay_NameForm_Initials" xml:space="preserve">
<value>Inicjały</value>
</data>
<data name="Settings_General_CustomSoundVolume_Name" xml:space="preserve">
<value>Własna głośność dźwięku</value>
</data>
<data name="Settings_General_CustomSoundVolume_Description" xml:space="preserve">
<value>Głośność odtwarzania trzech dołączonych własnych dźwięków powiadomień. Nie wpływa na 16 dźwięków gry.</value>
</data>
<data name="Settings_ThemeAndLayout_WindowOpacityInactive_Name" xml:space="preserve">
<value>Nieprzezroczystość nieaktywnego okna</value>
</data>
<data name="Settings_ThemeAndLayout_WindowOpacityInactive_Description" xml:space="preserve">
<value>Nieprzezroczystość tła głównego okna czatu, gdy nie jest aktywne. Suwak powyżej ustawia wartość dla aktywnego okna. Indywidualne ustawienie w menu przypinania Dalamud ma pierwszeństwo przed obydwoma.</value>
</data>
<data name="Tabs_NotificationSound_Enable_Name" xml:space="preserve">
<value>Dźwięk powiadomienia</value>
</data>
<data name="Tabs_NotificationSound_Description" xml:space="preserve">
<value>Odtwarza dźwięk, gdy wiadomość przybywa na tę kartę, gdy patrzysz na inną kartę. Respektuje globalny przełącznik dźwięku.</value>
</data>
<data name="Tabs_NotificationSound_Option" xml:space="preserve">
<value>Dźwięk</value>
</data>
<data name="Tabs_NotificationSound_Preview" xml:space="preserve">
<value>Podgląd wybranego dźwięku</value>
</data>
<data name="Tabs_NotificationSound_CustomOption" xml:space="preserve">
<value>Dźwięk Hellion</value>
</data>
<data name="FailedTell_Notification_Generic" xml:space="preserve">
<value>Tell nie mógł zostać dostarczony.</value>
</data>
<data name="FailedTell_Notification_Named" xml:space="preserve">
<value>Tell do {0} nie mógł zostać dostarczony.</value>
</data>
<data name="ChatInput_PluginDisclosure_Warning" xml:space="preserve">
<value>Ta wiadomość zawiera symbole tylko dla wtyczki, które inni gracze mogą widzieć jako puste kwadraty. Naciśnij Enter ponownie, aby wysłać mimo to.</value>
</data>
</root>
+195 -103
View File
@@ -12,9 +12,6 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Privacy_Tab_Title" xml:space="preserve">
<value>Privacidade</value>
</data>
<data name="Privacy_FilterEnabled_Name" xml:space="preserve">
<value>Ativar filtro de privacidade</value>
</data>
@@ -24,9 +21,6 @@
<data name="Privacy_FilterEnabled_StorageOnly_Help" xml:space="preserve">
<value>O filtro controla apenas o que é gravado no banco de dados local. O log de bate-papo continua exibindo todas as mensagens em tempo real; canais excluídos simplesmente não são mais armazenados. Se você quiser remover canais da exibição visível também, use os filtros normais de aba de chat no jogo.</value>
</data>
<data name="Privacy_Filter_Tree_Heading" xml:space="preserve">
<value>Filtro de privacidade e lista de permissões</value>
</data>
<data name="Privacy_Whitelist_Help" xml:space="preserve">
<value>Escolha quais canais são salvos no banco de dados local. O padrão segue a minimização de dados: apenas suas próprias conversas. Use os botões abaixo para aplicar uma predefinição.</value>
</data>
@@ -597,18 +591,6 @@
</data>
<!-- Hellion Chat — General tab section headings -->
<data name="Settings_General_Input_Heading" xml:space="preserve">
<value>Entrada</value>
</data>
<data name="Settings_General_Audio_Heading" xml:space="preserve">
<value>Áudio &amp; notificações</value>
</data>
<data name="Settings_General_Performance_Heading" xml:space="preserve">
<value>Performance</value>
</data>
<data name="Settings_General_Language_Heading" xml:space="preserve">
<value>Idioma &amp; auxiliares de entrada</value>
</data>
<!-- Hellion Chat — Appearance tab section headings -->
<data name="Settings_Appearance_Theme_Heading" xml:space="preserve">
@@ -625,32 +607,11 @@
</data>
<!-- Hellion Chat — Window tab section headings -->
<data name="Settings_Window_Hide_Heading" xml:space="preserve">
<value>Ocultação</value>
</data>
<data name="Settings_Window_InactivityHide_Heading" xml:space="preserve">
<value>Ocultação por inatividade</value>
</data>
<data name="Settings_Window_Frame_Heading" xml:space="preserve">
<value>Moldura da janela</value>
</data>
<data name="Settings_Window_Tooltips_Heading" xml:space="preserve">
<value>Dicas</value>
</data>
<!-- Hellion Chat — Chat tab section headings -->
<data name="Settings_Chat_AutoTellTabs_Heading" xml:space="preserve">
<value>Auto-Tell-Tabs</value>
</data>
<data name="Settings_Chat_Behaviour_Heading" xml:space="preserve">
<value>Comportamento de mensagens</value>
</data>
<data name="Settings_Chat_Preview_Heading" xml:space="preserve">
<value>Prévia</value>
</data>
<data name="Settings_Chat_Emotes_Heading" xml:space="preserve">
<value>Emotes</value>
</data>
<!-- Hellion Chat — Chat tab SymbolPicker -->
<data name="Settings_Chat_SymbolPicker_Enable_Name" xml:space="preserve">
@@ -672,15 +633,6 @@
</data>
<!-- Hellion Chat — Information tab section headings -->
<data name="Settings_Information_VersionInfo_Heading" xml:space="preserve">
<value>Informações de versão</value>
</data>
<data name="Settings_Information_About_Heading" xml:space="preserve">
<value>Sobre HellionChat</value>
</data>
<data name="Settings_Information_Changelog_Heading" xml:space="preserve">
<value>Changelog</value>
</data>
<!-- Hellion Chat — Default tab presets (channel-specific) -->
<data name="Tabs_Presets_System" xml:space="preserve">
@@ -811,12 +763,6 @@
<data name="Settings_Card_Tabs_Subtext" xml:space="preserve">
<value>Crie e configure abas de chat personalizadas.</value>
</data>
<data name="Settings_Card_Privacy_Title" xml:space="preserve">
<value>Privacidade</value>
</data>
<data name="Settings_Card_Privacy_Subtext" xml:space="preserve">
<value>Filtro de privacidade por canal e o que pode ser armazenado.</value>
</data>
<data name="Settings_Card_Database_Title" xml:space="preserve">
<value>Banco de Dados</value>
</data>
@@ -824,10 +770,10 @@
<value>Armazenamento, migração, limpeza legada</value>
</data>
<data name="Settings_Card_Information_Title" xml:space="preserve">
<value>Informações</value>
<value>Sobre</value>
</data>
<data name="Settings_Card_Information_Subtext" xml:space="preserve">
<value>Versão, missão, licença e changelog.</value>
<value>Extensões, versão, informações do projeto, tradutores e changelog.</value>
</data>
<data name="Settings_Tab_Themes" xml:space="preserve">
<value>Themes</value>
@@ -868,29 +814,11 @@
<data name="Appearance_UseCompactDensity_Description" xml:space="preserve">
<value>Altera o layout de mensagens do padrão de linhas em card de volta para linhas únicas `[HH:mm] Remetente: Texto`.</value>
</data>
<data name="Settings_Card_ThemeAndLayout_Title" xml:space="preserve">
<value>Theme &amp; Layout</value>
</data>
<data name="Settings_Card_ThemeAndLayout_Subtext" xml:space="preserve">
<value>Tema, moldura da janela e estilo de timestamp.</value>
</data>
<data name="Settings_Card_FontsAndColours_Title" xml:space="preserve">
<value>Fonts &amp; Colours</value>
</data>
<data name="Settings_Card_FontsAndColours_Subtext" xml:space="preserve">
<value>Fonte, tamanho da fonte e cores de chat por canal.</value>
</data>
<data name="Settings_Card_DataManagement_Title" xml:space="preserve">
<value>Gerenciamento de dados</value>
<value>Dados e privacidade</value>
</data>
<data name="Settings_Card_DataManagement_Subtext" xml:space="preserve">
<value>Retenção, limpeza, exportação e estatísticas do banco de dados.</value>
</data>
<data name="Settings_Card_Integrations_Title" xml:space="preserve">
<value>Integrações</value>
</data>
<data name="Settings_Card_Integrations_Subtext" xml:space="preserve">
<value>Outros plugins do Dalamud com os quais o HellionChat funciona. Integrações futuras em prévia.</value>
<value>Filtro de privacidade, retenção, limpeza, exportação e estatísticas do banco de dados.</value>
</data>
<data name="Settings_ThemeAndLayout_Theme_Heading" xml:space="preserve">
<value>Theme</value>
@@ -907,39 +835,12 @@
<data name="Settings_ThemeAndLayout_WindowOpacity_Description" xml:space="preserve">
<value>O nível de transparência do fundo da janela. Valores menores deixam mais do jogo aparecer. Dica: o menu por janela do Dalamud (hambúrguer na barra de título) oferece ajustes individuais de opacidade, desfoque de fundo, clique passante e fixação: esses têm prioridade sobre este controle para a janela respectiva.</value>
</data>
<data name="Settings_FontsAndColours_Fonts_Heading" xml:space="preserve">
<value>Fontes</value>
</data>
<data name="Settings_FontsAndColours_Colours_Heading" xml:space="preserve">
<value>Cores do chat</value>
</data>
<data name="Settings_DataManagement_Storage_Heading" xml:space="preserve">
<value>Armazenamento</value>
</data>
<data name="Settings_DataManagement_Retention_Heading" xml:space="preserve">
<value>Retenção</value>
</data>
<data name="Settings_DataManagement_Cleanup_Heading" xml:space="preserve">
<value>Limpeza</value>
</data>
<data name="Settings_DataManagement_Export_Heading" xml:space="preserve">
<value>Exportar</value>
</data>
<data name="Settings_DataManagement_DbViewer_Heading" xml:space="preserve">
<value>Visualizador de banco de dados</value>
</data>
<data name="Settings_DataManagement_Advanced_Heading" xml:space="preserve">
<value>Avançado (Shift+clique para abrir)</value>
</data>
<data name="Settings_Window_Frame_Behaviour_Heading" xml:space="preserve">
<value>Comportamento</value>
</data>
<data name="Migration_v16_OverrideStyle_Toast" xml:space="preserve">
<value>O Hellion Chat 1.2.1 reorganizou o menu de configurações e removeu a antiga opção "Substituir estilo" (substituída pelo sistema de temas da versão 1.1.0). Suas demais configurações permanecem inalteradas. A transparência da janela foi migrada para "Theme &amp; Layout". Um backup da configuração anterior está em pluginConfigs/HellionChat.json.pre-v16-backup ao lado do HellionChat.json ativo.</value>
</data>
<data name="Settings_Tab_Integrations" xml:space="preserve">
<value>Integrações</value>
</data>
<data name="Settings_Integrations_Intro" xml:space="preserve">
<value>As integrações de plugin permitem que o HellionChat trabalhe junto com outros plugins Dalamud instalados. Cada integração detecta automaticamente seu alvo e se desativa silenciosamente quando o plugin alvo está ausente.</value>
</data>
@@ -1054,4 +955,195 @@
<value>Desativa a transição de temas, as animações de foco da barra lateral e dos cartões e a pulsação de abas não lidas. As trocas de tema e os estados de foco passam a ser aplicados instantaneamente.</value>
<comment>AI-assisted machine translation. Pending native-speaker review.</comment>
</data>
<!-- Hellion Chat — Settings Overhaul section titles (v1.5.6) -->
<data name="Settings_Section_Input" xml:space="preserve">
<value>Entrada</value>
</data>
<data name="Settings_Section_Sound" xml:space="preserve">
<value>Som</value>
</data>
<data name="Settings_Section_Language" xml:space="preserve">
<value>Idioma</value>
</data>
<data name="Settings_Section_Performance" xml:space="preserve">
<value>Desempenho</value>
</data>
<data name="Settings_Section_Sound_TabsHint" xml:space="preserve">
<value>O som reproduzido por aba é definido na aba Canais.</value>
</data>
<data name="Settings_Section_Theme" xml:space="preserve">
<value>Tema</value>
</data>
<data name="Settings_Section_Fonts" xml:space="preserve">
<value>Fontes</value>
</data>
<data name="Settings_Section_Colours" xml:space="preserve">
<value>Cores</value>
</data>
<data name="Settings_Section_WindowStyle" xml:space="preserve">
<value>Estilo da janela</value>
</data>
<data name="Settings_Section_Timestamps" xml:space="preserve">
<value>Marcações de tempo</value>
</data>
<data name="Settings_Section_Animations" xml:space="preserve">
<value>Animações</value>
</data>
<data name="Settings_Section_Messages" xml:space="preserve">
<value>Mensagens</value>
</data>
<data name="Settings_Section_InputPreview" xml:space="preserve">
<value>Entrada e visualização</value>
</data>
<data name="Settings_Section_AutoTellTabs" xml:space="preserve">
<value>Abas de tell automático</value>
</data>
<data name="Settings_Section_Emotes" xml:space="preserve">
<value>Emotes</value>
</data>
<data name="Settings_Section_LinksTooltips" xml:space="preserve">
<value>Links e dicas</value>
</data>
<data name="Settings_Section_NoviceNetwork" xml:space="preserve">
<value>Rede de novatos</value>
</data>
<data name="Settings_Section_Hide" xml:space="preserve">
<value>Ocultar</value>
</data>
<data name="Settings_Section_InactivityHide" xml:space="preserve">
<value>Ocultar quando inativo</value>
</data>
<data name="Settings_Section_Frame" xml:space="preserve">
<value>Moldura</value>
</data>
<data name="Settings_Section_Tab_Channels" xml:space="preserve">
<value>Canais</value>
</data>
<data name="Settings_Section_Tab_Display" xml:space="preserve">
<value>Exibição</value>
</data>
<data name="Settings_Section_Tab_Notification" xml:space="preserve">
<value>Notificação</value>
</data>
<data name="Settings_Section_Tab_Input" xml:space="preserve">
<value>Entrada</value>
</data>
<data name="Settings_Section_Tab_PopOut" xml:space="preserve">
<value>Janela pop-out</value>
</data>
<data name="Settings_Section_Tab_Volume_AllTabsHint" xml:space="preserve">
<value>Este volume se aplica a todas as abas.</value>
</data>
<data name="Settings_Section_PrivacyFilter" xml:space="preserve">
<value>Filtro de privacidade</value>
</data>
<data name="Settings_Section_Storage" xml:space="preserve">
<value>Armazenamento</value>
</data>
<data name="Settings_Section_Retention" xml:space="preserve">
<value>Retenção</value>
</data>
<data name="Settings_Section_Cleanup" xml:space="preserve">
<value>Limpeza</value>
</data>
<data name="Settings_Section_Export" xml:space="preserve">
<value>Exportar</value>
</data>
<data name="Settings_Section_Database" xml:space="preserve">
<value>Banco de dados</value>
</data>
<data name="Settings_Section_Extensions" xml:space="preserve">
<value>Extensões</value>
</data>
<data name="Settings_Section_PluginInfo" xml:space="preserve">
<value>Informações do plugin</value>
</data>
<data name="Settings_Section_Project" xml:space="preserve">
<value>O projeto</value>
</data>
<data name="Settings_Section_Translators" xml:space="preserve">
<value>Tradutores</value>
</data>
<data name="Settings_Section_Changelog" xml:space="preserve">
<value>Registro de alterações</value>
</data>
<data name="Settings_Chat_NotifyFailedTell_Name" xml:space="preserve">
<value>Notificar ao falhar tell</value>
</data>
<data name="Settings_Chat_NotifyFailedTell_Description" xml:space="preserve">
<value>Exibe uma notificação quando um tell que você enviou não pôde ser entregue (destinatário offline, em uma instância ou bloqueando você).</value>
</data>
<data name="Settings_Chat_NotifyPluginDisclosure_Name" xml:space="preserve">
<value>Avisar antes de enviar símbolos exclusivos do plugin</value>
</data>
<data name="Settings_Chat_NotifyPluginDisclosure_Description" xml:space="preserve">
<value>Exibe um aviso quando uma mensagem que você está prestes a enviar contém símbolos que só são exibidos corretamente para jogadores que usam HellionChat ou um plugin semelhante.</value>
</data>
<data name="Settings_Chat_WorldSuffix_Name" xml:space="preserve">
<value>Sufixo de mundo</value>
</data>
<data name="Settings_Chat_WorldSuffix_Description" xml:space="preserve">
<value>Quando adicionar o mundo de origem ao nome do remetente no registro de chat.</value>
</data>
<data name="Settings_Chat_NameForm_Name" xml:space="preserve">
<value>Formato de nome</value>
</data>
<data name="Settings_Chat_NameForm_Description" xml:space="preserve">
<value>Como os nomes dos remetentes são exibidos no registro de chat. O nome completo é o padrão.</value>
</data>
<data name="NameDisplay_WorldSuffix_Never" xml:space="preserve">
<value>Nunca</value>
</data>
<data name="NameDisplay_WorldSuffix_OtherWorldOnly" xml:space="preserve">
<value>Apenas outros mundos</value>
</data>
<data name="NameDisplay_WorldSuffix_Always" xml:space="preserve">
<value>Sempre</value>
</data>
<data name="NameDisplay_NameForm_Full" xml:space="preserve">
<value>Nome completo</value>
</data>
<data name="NameDisplay_NameForm_FirstNameOnly" xml:space="preserve">
<value>Apenas primeiro nome</value>
</data>
<data name="NameDisplay_NameForm_Initials" xml:space="preserve">
<value>Iniciais</value>
</data>
<data name="Settings_General_CustomSoundVolume_Name" xml:space="preserve">
<value>Volume de som personalizado</value>
</data>
<data name="Settings_General_CustomSoundVolume_Description" xml:space="preserve">
<value>Volume de reprodução dos três sons de notificação personalizados incluídos. Não afeta os 16 sons do jogo.</value>
</data>
<data name="Settings_ThemeAndLayout_WindowOpacityInactive_Name" xml:space="preserve">
<value>Opacidade da janela inativa</value>
</data>
<data name="Settings_ThemeAndLayout_WindowOpacityInactive_Description" xml:space="preserve">
<value>Opacidade do fundo da janela de chat principal enquanto não está em foco. O controle deslizante acima define o valor em foco. Uma substituição por janela no menu de fixação do Dalamud tem prioridade sobre ambos.</value>
</data>
<data name="Tabs_NotificationSound_Enable_Name" xml:space="preserve">
<value>Som de notificação</value>
</data>
<data name="Tabs_NotificationSound_Description" xml:space="preserve">
<value>Reproduz um som quando uma mensagem chega nesta aba enquanto você está em outra aba. Respeita o botão global de som.</value>
</data>
<data name="Tabs_NotificationSound_Option" xml:space="preserve">
<value>Som</value>
</data>
<data name="Tabs_NotificationSound_Preview" xml:space="preserve">
<value>Visualizar o som selecionado</value>
</data>
<data name="Tabs_NotificationSound_CustomOption" xml:space="preserve">
<value>Som Hellion</value>
</data>
<data name="FailedTell_Notification_Generic" xml:space="preserve">
<value>Um tell não pôde ser entregue.</value>
</data>
<data name="FailedTell_Notification_Named" xml:space="preserve">
<value>Tell para {0} não pôde ser entregue.</value>
</data>
<data name="ChatInput_PluginDisclosure_Warning" xml:space="preserve">
<value>Esta mensagem contém símbolos exclusivos do plugin que outros jogadores podem ver como caixas vazias. Pressione Enter novamente para enviar mesmo assim.</value>
</data>
</root>
+195 -103
View File
@@ -12,9 +12,6 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Privacy_Tab_Title" xml:space="preserve">
<value>Privacidade</value>
</data>
<data name="Privacy_FilterEnabled_Name" xml:space="preserve">
<value>Ativar filtro de privacidade</value>
</data>
@@ -24,9 +21,6 @@
<data name="Privacy_FilterEnabled_StorageOnly_Help" xml:space="preserve">
<value>O filtro controla apenas o que é escrito na base de dados local. O registo de chat continua a mostrar todas as mensagens em tempo real; os canais excluídos deixam simplesmente de ser armazenados. Se também quiseres remover canais da visualização, usa os filtros normais de separadores de chat no jogo.</value>
</data>
<data name="Privacy_Filter_Tree_Heading" xml:space="preserve">
<value>Filtro de privacidade e lista de permissões</value>
</data>
<data name="Privacy_Whitelist_Help" xml:space="preserve">
<value>Escolhe quais os canais guardados na base de dados local. A predefinição segue o princípio da minimização de dados: apenas as tuas próprias conversas. Usa os botões abaixo para aplicar uma predefinição.</value>
</data>
@@ -597,18 +591,6 @@
</data>
<!-- Hellion Chat — General tab section headings -->
<data name="Settings_General_Input_Heading" xml:space="preserve">
<value>Entrada</value>
</data>
<data name="Settings_General_Audio_Heading" xml:space="preserve">
<value>Áudio &amp; notificações</value>
</data>
<data name="Settings_General_Performance_Heading" xml:space="preserve">
<value>Desempenho</value>
</data>
<data name="Settings_General_Language_Heading" xml:space="preserve">
<value>Idioma &amp; auxiliares de entrada</value>
</data>
<!-- Hellion Chat — Appearance tab section headings -->
<data name="Settings_Appearance_Theme_Heading" xml:space="preserve">
@@ -625,32 +607,11 @@
</data>
<!-- Hellion Chat — Window tab section headings -->
<data name="Settings_Window_Hide_Heading" xml:space="preserve">
<value>Ocultar</value>
</data>
<data name="Settings_Window_InactivityHide_Heading" xml:space="preserve">
<value>Ocultar por inatividade</value>
</data>
<data name="Settings_Window_Frame_Heading" xml:space="preserve">
<value>Moldura da janela</value>
</data>
<data name="Settings_Window_Tooltips_Heading" xml:space="preserve">
<value>Tooltips</value>
</data>
<!-- Hellion Chat — Chat tab section headings -->
<data name="Settings_Chat_AutoTellTabs_Heading" xml:space="preserve">
<value>Auto-Tell-Tabs</value>
</data>
<data name="Settings_Chat_Behaviour_Heading" xml:space="preserve">
<value>Comportamento das mensagens</value>
</data>
<data name="Settings_Chat_Preview_Heading" xml:space="preserve">
<value>Pré-visualização</value>
</data>
<data name="Settings_Chat_Emotes_Heading" xml:space="preserve">
<value>Emotes</value>
</data>
<!-- Hellion Chat — Chat tab SymbolPicker -->
<data name="Settings_Chat_SymbolPicker_Enable_Name" xml:space="preserve">
@@ -672,15 +633,6 @@
</data>
<!-- Hellion Chat — Information tab section headings -->
<data name="Settings_Information_VersionInfo_Heading" xml:space="preserve">
<value>Informação de versão</value>
</data>
<data name="Settings_Information_About_Heading" xml:space="preserve">
<value>Sobre o HellionChat</value>
</data>
<data name="Settings_Information_Changelog_Heading" xml:space="preserve">
<value>Changelog</value>
</data>
<!-- Hellion Chat — Default tab presets (channel-specific) -->
<data name="Tabs_Presets_System" xml:space="preserve">
@@ -811,12 +763,6 @@
<data name="Settings_Card_Tabs_Subtext" xml:space="preserve">
<value>Cria e configura separadores de chat personalizados.</value>
</data>
<data name="Settings_Card_Privacy_Title" xml:space="preserve">
<value>Privacidade</value>
</data>
<data name="Settings_Card_Privacy_Subtext" xml:space="preserve">
<value>Filtro de privacidade por canal e o que pode ser armazenado.</value>
</data>
<data name="Settings_Card_Database_Title" xml:space="preserve">
<value>Base de dados</value>
</data>
@@ -824,10 +770,10 @@
<value>Armazenamento, migração, limpeza de dados antigos</value>
</data>
<data name="Settings_Card_Information_Title" xml:space="preserve">
<value>Informação</value>
<value>Sobre</value>
</data>
<data name="Settings_Card_Information_Subtext" xml:space="preserve">
<value>Versão, missão, licença e changelog.</value>
<value>Extensões, versão, informações do projeto, tradutores e changelog.</value>
</data>
<data name="Settings_Tab_Themes" xml:space="preserve">
<value>Themes</value>
@@ -868,29 +814,11 @@
<data name="Appearance_UseCompactDensity_Description" xml:space="preserve">
<value>Muda o layout das mensagens da predefinição de linhas em cartão para linhas simples `[HH:mm] Remetente: Texto`.</value>
</data>
<data name="Settings_Card_ThemeAndLayout_Title" xml:space="preserve">
<value>Theme &amp; Layout</value>
</data>
<data name="Settings_Card_ThemeAndLayout_Subtext" xml:space="preserve">
<value>Theme, moldura da janela e estilo de marcas de tempo.</value>
</data>
<data name="Settings_Card_FontsAndColours_Title" xml:space="preserve">
<value>Tipos de letra &amp; Cores</value>
</data>
<data name="Settings_Card_FontsAndColours_Subtext" xml:space="preserve">
<value>Tipo de letra, tamanho e cores de chat por canal.</value>
</data>
<data name="Settings_Card_DataManagement_Title" xml:space="preserve">
<value>Gestão de dados</value>
<value>Dados e privacidade</value>
</data>
<data name="Settings_Card_DataManagement_Subtext" xml:space="preserve">
<value>Retenção, limpeza, exportação e estatísticas da base de dados.</value>
</data>
<data name="Settings_Card_Integrations_Title" xml:space="preserve">
<value>Integrações</value>
</data>
<data name="Settings_Card_Integrations_Subtext" xml:space="preserve">
<value>Outros plugins Dalamud com os quais o HellionChat funciona. Integrações futuras em pré-visualização.</value>
<value>Filtro de privacidade, retenção, limpeza, exportação e estatísticas da base de dados.</value>
</data>
<data name="Settings_ThemeAndLayout_Theme_Heading" xml:space="preserve">
<value>Theme</value>
@@ -907,39 +835,12 @@
<data name="Settings_ThemeAndLayout_WindowOpacity_Description" xml:space="preserve">
<value>Quão transparente é o fundo da janela. Valores mais baixos deixam mais do jogo aparecer por detrás. Dica: o menu por janela do Dalamud (hamburger na barra de título) oferece substituições por janela para opacidade, desfoque de fundo, clique transparente e fixação: têm precedência sobre este cursor para a janela em questão.</value>
</data>
<data name="Settings_FontsAndColours_Fonts_Heading" xml:space="preserve">
<value>Tipos de letra</value>
</data>
<data name="Settings_FontsAndColours_Colours_Heading" xml:space="preserve">
<value>Cores do chat</value>
</data>
<data name="Settings_DataManagement_Storage_Heading" xml:space="preserve">
<value>Armazenamento</value>
</data>
<data name="Settings_DataManagement_Retention_Heading" xml:space="preserve">
<value>Retenção</value>
</data>
<data name="Settings_DataManagement_Cleanup_Heading" xml:space="preserve">
<value>Limpeza</value>
</data>
<data name="Settings_DataManagement_Export_Heading" xml:space="preserve">
<value>Exportar</value>
</data>
<data name="Settings_DataManagement_DbViewer_Heading" xml:space="preserve">
<value>Visualizador da base de dados</value>
</data>
<data name="Settings_DataManagement_Advanced_Heading" xml:space="preserve">
<value>Avançado (Shift+clique para abrir)</value>
</data>
<data name="Settings_Window_Frame_Behaviour_Heading" xml:space="preserve">
<value>Comportamento</value>
</data>
<data name="Migration_v16_OverrideStyle_Toast" xml:space="preserve">
<value>O Hellion Chat 1.2.1 reorganizou o menu de definições e removeu a antiga opção "Substituir estilo" (substituída pelo sistema de themes a partir da versão 1.1.0). As tuas restantes definições ficam inalteradas. A transparência da janela foi migrada para "Theme &amp; Layout". Uma cópia de segurança da configuração anterior encontra-se em pluginConfigs/HellionChat.json.pre-v16-backup junto ao ficheiro HellionChat.json ativo.</value>
</data>
<data name="Settings_Tab_Integrations" xml:space="preserve">
<value>Integrações</value>
</data>
<data name="Settings_Integrations_Intro" xml:space="preserve">
<value>As integrações de plugins permitem que o HellionChat funcione em conjunto com outros plugins Dalamud instalados. Cada integração deteta automaticamente o seu alvo e desativa-se silenciosamente quando o plugin alvo está em falta.</value>
</data>
@@ -1053,4 +954,195 @@
<value>Desativa a transição de temas, as animações de passagem do rato sobre a barra lateral e os cartões e a pulsação de separadores não lidos. As mudanças de tema e os estados de passagem do rato passam a ser aplicados instantaneamente.</value>
<comment>AI-assisted machine translation. Pending native-speaker review.</comment>
</data>
<!-- Hellion Chat — Settings Overhaul section titles (v1.5.6) -->
<data name="Settings_Section_Input" xml:space="preserve">
<value>Entrada</value>
</data>
<data name="Settings_Section_Sound" xml:space="preserve">
<value>Som</value>
</data>
<data name="Settings_Section_Language" xml:space="preserve">
<value>Idioma</value>
</data>
<data name="Settings_Section_Performance" xml:space="preserve">
<value>Desempenho</value>
</data>
<data name="Settings_Section_Sound_TabsHint" xml:space="preserve">
<value>O som reproduzido por separador é definido no separador Canais.</value>
</data>
<data name="Settings_Section_Theme" xml:space="preserve">
<value>Tema</value>
</data>
<data name="Settings_Section_Fonts" xml:space="preserve">
<value>Tipos de letra</value>
</data>
<data name="Settings_Section_Colours" xml:space="preserve">
<value>Cores</value>
</data>
<data name="Settings_Section_WindowStyle" xml:space="preserve">
<value>Estilo da janela</value>
</data>
<data name="Settings_Section_Timestamps" xml:space="preserve">
<value>Marcas de tempo</value>
</data>
<data name="Settings_Section_Animations" xml:space="preserve">
<value>Animações</value>
</data>
<data name="Settings_Section_Messages" xml:space="preserve">
<value>Mensagens</value>
</data>
<data name="Settings_Section_InputPreview" xml:space="preserve">
<value>Entrada e pré-visualização</value>
</data>
<data name="Settings_Section_AutoTellTabs" xml:space="preserve">
<value>Separadores de tell automático</value>
</data>
<data name="Settings_Section_Emotes" xml:space="preserve">
<value>Emotes</value>
</data>
<data name="Settings_Section_LinksTooltips" xml:space="preserve">
<value>Ligações e dicas</value>
</data>
<data name="Settings_Section_NoviceNetwork" xml:space="preserve">
<value>Rede de novatos</value>
</data>
<data name="Settings_Section_Hide" xml:space="preserve">
<value>Ocultar</value>
</data>
<data name="Settings_Section_InactivityHide" xml:space="preserve">
<value>Ocultar quando inativo</value>
</data>
<data name="Settings_Section_Frame" xml:space="preserve">
<value>Moldura</value>
</data>
<data name="Settings_Section_Tab_Channels" xml:space="preserve">
<value>Canais</value>
</data>
<data name="Settings_Section_Tab_Display" xml:space="preserve">
<value>Exibição</value>
</data>
<data name="Settings_Section_Tab_Notification" xml:space="preserve">
<value>Notificação</value>
</data>
<data name="Settings_Section_Tab_Input" xml:space="preserve">
<value>Entrada</value>
</data>
<data name="Settings_Section_Tab_PopOut" xml:space="preserve">
<value>Janela destacável</value>
</data>
<data name="Settings_Section_Tab_Volume_AllTabsHint" xml:space="preserve">
<value>Este volume aplica-se a todos os separadores.</value>
</data>
<data name="Settings_Section_PrivacyFilter" xml:space="preserve">
<value>Filtro de privacidade</value>
</data>
<data name="Settings_Section_Storage" xml:space="preserve">
<value>Armazenamento</value>
</data>
<data name="Settings_Section_Retention" xml:space="preserve">
<value>Retenção</value>
</data>
<data name="Settings_Section_Cleanup" xml:space="preserve">
<value>Limpeza</value>
</data>
<data name="Settings_Section_Export" xml:space="preserve">
<value>Exportar</value>
</data>
<data name="Settings_Section_Database" xml:space="preserve">
<value>Base de dados</value>
</data>
<data name="Settings_Section_Extensions" xml:space="preserve">
<value>Extensões</value>
</data>
<data name="Settings_Section_PluginInfo" xml:space="preserve">
<value>Informações do plugin</value>
</data>
<data name="Settings_Section_Project" xml:space="preserve">
<value>O projeto</value>
</data>
<data name="Settings_Section_Translators" xml:space="preserve">
<value>Tradutores</value>
</data>
<data name="Settings_Section_Changelog" xml:space="preserve">
<value>Registo de alterações</value>
</data>
<data name="Settings_Chat_NotifyFailedTell_Name" xml:space="preserve">
<value>Notificar ao falhar tell</value>
</data>
<data name="Settings_Chat_NotifyFailedTell_Description" xml:space="preserve">
<value>Exibe uma notificação quando um tell que enviaste não pôde ser entregue (destinatário offline, numa instância ou a bloquear-te).</value>
</data>
<data name="Settings_Chat_NotifyPluginDisclosure_Name" xml:space="preserve">
<value>Avisar antes de enviar símbolos exclusivos do plugin</value>
</data>
<data name="Settings_Chat_NotifyPluginDisclosure_Description" xml:space="preserve">
<value>Exibe um aviso quando uma mensagem que estás prestes a enviar contém símbolos que só são exibidos corretamente para jogadores que utilizam HellionChat ou um plugin semelhante.</value>
</data>
<data name="Settings_Chat_WorldSuffix_Name" xml:space="preserve">
<value>Sufixo de mundo</value>
</data>
<data name="Settings_Chat_WorldSuffix_Description" xml:space="preserve">
<value>Quando adicionar o mundo de origem ao nome do remetente no registo de chat.</value>
</data>
<data name="Settings_Chat_NameForm_Name" xml:space="preserve">
<value>Formato do nome</value>
</data>
<data name="Settings_Chat_NameForm_Description" xml:space="preserve">
<value>Como os nomes dos remetentes são exibidos no registo de chat. O nome completo é o padrão.</value>
</data>
<data name="NameDisplay_WorldSuffix_Never" xml:space="preserve">
<value>Nunca</value>
</data>
<data name="NameDisplay_WorldSuffix_OtherWorldOnly" xml:space="preserve">
<value>Apenas outros mundos</value>
</data>
<data name="NameDisplay_WorldSuffix_Always" xml:space="preserve">
<value>Sempre</value>
</data>
<data name="NameDisplay_NameForm_Full" xml:space="preserve">
<value>Nome completo</value>
</data>
<data name="NameDisplay_NameForm_FirstNameOnly" xml:space="preserve">
<value>Apenas primeiro nome</value>
</data>
<data name="NameDisplay_NameForm_Initials" xml:space="preserve">
<value>Iniciais</value>
</data>
<data name="Settings_General_CustomSoundVolume_Name" xml:space="preserve">
<value>Volume de som personalizado</value>
</data>
<data name="Settings_General_CustomSoundVolume_Description" xml:space="preserve">
<value>Volume de reprodução dos três sons de notificação personalizados incluídos. Não afeta os 16 sons do jogo.</value>
</data>
<data name="Settings_ThemeAndLayout_WindowOpacityInactive_Name" xml:space="preserve">
<value>Opacidade da janela inativa</value>
</data>
<data name="Settings_ThemeAndLayout_WindowOpacityInactive_Description" xml:space="preserve">
<value>Opacidade do fundo da janela de chat principal enquanto não está em foco. O controlo deslizante acima define o valor em foco. Uma substituição por janela no menu de fixação do Dalamud tem prioridade sobre ambos.</value>
</data>
<data name="Tabs_NotificationSound_Enable_Name" xml:space="preserve">
<value>Som de notificação</value>
</data>
<data name="Tabs_NotificationSound_Description" xml:space="preserve">
<value>Reproduz um som quando uma mensagem chega neste separador enquanto estás noutro separador. Respeita o botão global de som.</value>
</data>
<data name="Tabs_NotificationSound_Option" xml:space="preserve">
<value>Som</value>
</data>
<data name="Tabs_NotificationSound_Preview" xml:space="preserve">
<value>Pré-visualizar o som selecionado</value>
</data>
<data name="Tabs_NotificationSound_CustomOption" xml:space="preserve">
<value>Som Hellion</value>
</data>
<data name="FailedTell_Notification_Generic" xml:space="preserve">
<value>Um tell não pôde ser entregue.</value>
</data>
<data name="FailedTell_Notification_Named" xml:space="preserve">
<value>Tell para {0} não pôde ser entregue.</value>
</data>
<data name="ChatInput_PluginDisclosure_Warning" xml:space="preserve">
<value>Esta mensagem contém símbolos exclusivos do plugin que outros jogadores podem ver como caixas vazias. Pressiona Enter novamente para enviar mesmo assim.</value>
</data>
</root>
+219 -101
View File
@@ -12,9 +12,6 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Privacy_Tab_Title" xml:space="preserve">
<value>Privacy</value>
</data>
<data name="Privacy_FilterEnabled_Name" xml:space="preserve">
<value>Enable privacy filter</value>
</data>
@@ -24,9 +21,6 @@
<data name="Privacy_FilterEnabled_StorageOnly_Help" xml:space="preserve">
<value>The filter only controls what is written to the local database. The chat log still shows every message live; excluded channels are simply no longer stored. If you also want to remove channels from the visible display, use the normal chat-tab filters in the game.</value>
</data>
<data name="Privacy_Filter_Tree_Heading" xml:space="preserve">
<value>Privacy filter and whitelist</value>
</data>
<data name="Privacy_Whitelist_Help" xml:space="preserve">
<value>Choose which channels are saved to the local database. Default follows data minimisation: only your own conversations. Use the buttons below to apply a preset.</value>
</data>
@@ -596,20 +590,6 @@
<value>About</value>
</data>
<!-- Hellion Chat — General tab section headings -->
<data name="Settings_General_Input_Heading" xml:space="preserve">
<value>Input</value>
</data>
<data name="Settings_General_Audio_Heading" xml:space="preserve">
<value>Audio &amp; notifications</value>
</data>
<data name="Settings_General_Performance_Heading" xml:space="preserve">
<value>Performance</value>
</data>
<data name="Settings_General_Language_Heading" xml:space="preserve">
<value>Language &amp; input aids</value>
</data>
<!-- Hellion Chat — Appearance tab section headings -->
<data name="Settings_Appearance_Theme_Heading" xml:space="preserve">
<value>Theme</value>
@@ -624,34 +604,10 @@
<value>Timestamps</value>
</data>
<!-- Hellion Chat — Window tab section headings -->
<data name="Settings_Window_Hide_Heading" xml:space="preserve">
<value>Hiding</value>
</data>
<data name="Settings_Window_InactivityHide_Heading" xml:space="preserve">
<value>Inactivity hiding</value>
</data>
<!-- Hellion Chat — Window tab section headings (pre-cycle legacy, kept for reference) -->
<data name="Settings_Window_Frame_Heading" xml:space="preserve">
<value>Window frame</value>
</data>
<data name="Settings_Window_Tooltips_Heading" xml:space="preserve">
<value>Tooltips</value>
</data>
<!-- Hellion Chat — Chat tab section headings -->
<data name="Settings_Chat_AutoTellTabs_Heading" xml:space="preserve">
<value>Auto-Tell-Tabs</value>
</data>
<data name="Settings_Chat_Behaviour_Heading" xml:space="preserve">
<value>Message behaviour</value>
</data>
<data name="Settings_Chat_Preview_Heading" xml:space="preserve">
<value>Preview</value>
</data>
<data name="Settings_Chat_Emotes_Heading" xml:space="preserve">
<value>Emotes</value>
</data>
<!-- Hellion Chat — Chat tab SymbolPicker -->
<data name="Settings_Chat_SymbolPicker_Enable_Name" xml:space="preserve">
<value>Show symbol-picker button next to chat input</value>
@@ -671,17 +627,6 @@
<value>Maintenance</value>
</data>
<!-- Hellion Chat — Information tab section headings -->
<data name="Settings_Information_VersionInfo_Heading" xml:space="preserve">
<value>Version info</value>
</data>
<data name="Settings_Information_About_Heading" xml:space="preserve">
<value>About HellionChat</value>
</data>
<data name="Settings_Information_Changelog_Heading" xml:space="preserve">
<value>Changelog</value>
</data>
<!-- Hellion Chat — Default tab presets (channel-specific) -->
<data name="Tabs_Presets_System" xml:space="preserve">
<value>System</value>
@@ -811,12 +756,6 @@
<data name="Settings_Card_Tabs_Subtext" xml:space="preserve">
<value>Create and configure custom chat tabs.</value>
</data>
<data name="Settings_Card_Privacy_Title" xml:space="preserve">
<value>Privacy</value>
</data>
<data name="Settings_Card_Privacy_Subtext" xml:space="preserve">
<value>Privacy filter per channel and what may be stored.</value>
</data>
<data name="Settings_Card_Database_Title" xml:space="preserve">
<value>Database</value>
</data>
@@ -824,10 +763,10 @@
<value>Storage, migration, legacy cleanup</value>
</data>
<data name="Settings_Card_Information_Title" xml:space="preserve">
<value>Information</value>
<value>About</value>
</data>
<data name="Settings_Card_Information_Subtext" xml:space="preserve">
<value>Version, mission, licence, and changelog.</value>
<value>Extensions, version, project info, translators, and changelog.</value>
</data>
<data name="Settings_Tab_Themes" xml:space="preserve">
<value>Themes</value>
@@ -868,29 +807,11 @@
<data name="Appearance_UseCompactDensity_Description" xml:space="preserve">
<value>Switches the message layout from the card-row default back to single-line `[HH:mm] Sender: Text` rows.</value>
</data>
<data name="Settings_Card_ThemeAndLayout_Title" xml:space="preserve">
<value>Theme &amp; Layout</value>
</data>
<data name="Settings_Card_ThemeAndLayout_Subtext" xml:space="preserve">
<value>Theme, window frame, and timestamp style.</value>
</data>
<data name="Settings_Card_FontsAndColours_Title" xml:space="preserve">
<value>Fonts &amp; Colours</value>
</data>
<data name="Settings_Card_FontsAndColours_Subtext" xml:space="preserve">
<value>Font, font size, and chat colours per channel.</value>
</data>
<data name="Settings_Card_DataManagement_Title" xml:space="preserve">
<value>Data management</value>
<value>Data &amp; Privacy</value>
</data>
<data name="Settings_Card_DataManagement_Subtext" xml:space="preserve">
<value>Retention, cleanup, export, and database statistics.</value>
</data>
<data name="Settings_Card_Integrations_Title" xml:space="preserve">
<value>Integrations</value>
</data>
<data name="Settings_Card_Integrations_Subtext" xml:space="preserve">
<value>Other Dalamud plugins that HellionChat works with. Upcoming integrations in preview.</value>
<value>Privacy filter, retention, cleanup, export, and database statistics.</value>
</data>
<data name="Settings_ThemeAndLayout_Theme_Heading" xml:space="preserve">
<value>Theme</value>
@@ -907,39 +828,30 @@
<data name="Settings_ThemeAndLayout_WindowOpacity_Description" xml:space="preserve">
<value>How transparent the window background is. Lower values let more of the game show through. Tip: Dalamud's per-window menu (hamburger in the title bar) offers per-window overrides for opacity, background blur, click-through, and pinning. Those take precedence over this slider for the respective window.</value>
</data>
<data name="Settings_FontsAndColours_Fonts_Heading" xml:space="preserve">
<value>Fonts</value>
<data name="Settings_Section_PrivacyFilter" xml:space="preserve">
<value>Privacy filter</value>
</data>
<data name="Settings_FontsAndColours_Colours_Heading" xml:space="preserve">
<value>Chat colours</value>
</data>
<data name="Settings_DataManagement_Storage_Heading" xml:space="preserve">
<data name="Settings_Section_Storage" xml:space="preserve">
<value>Storage</value>
</data>
<data name="Settings_DataManagement_Retention_Heading" xml:space="preserve">
<data name="Settings_Section_Retention" xml:space="preserve">
<value>Retention</value>
</data>
<data name="Settings_DataManagement_Cleanup_Heading" xml:space="preserve">
<data name="Settings_Section_Cleanup" xml:space="preserve">
<value>Cleanup</value>
</data>
<data name="Settings_DataManagement_Export_Heading" xml:space="preserve">
<data name="Settings_Section_Export" xml:space="preserve">
<value>Export</value>
</data>
<data name="Settings_DataManagement_DbViewer_Heading" xml:space="preserve">
<value>Database viewer</value>
<data name="Settings_Section_Database" xml:space="preserve">
<value>Database</value>
</data>
<data name="Settings_DataManagement_Advanced_Heading" xml:space="preserve">
<value>Advanced (Shift+click to open)</value>
</data>
<data name="Settings_Window_Frame_Behaviour_Heading" xml:space="preserve">
<value>Behaviour</value>
</data>
<data name="Migration_v16_OverrideStyle_Toast" xml:space="preserve">
<value>Hellion Chat 1.2.1 has reorganised the settings menu and removed the old "Override style" option (superseded by the theme system from 1.1.0). Your remaining settings are unchanged. Window transparency has been migrated to "Theme &amp; Layout". A backup of the previous config is located at pluginConfigs/HellionChat.json.pre-v16-backup next to the active HellionChat.json.</value>
</data>
<data name="Settings_Tab_Integrations" xml:space="preserve">
<value>Integrations</value>
</data>
<data name="Settings_Integrations_Intro" xml:space="preserve">
<value>Plugin integrations let HellionChat work together with other installed Dalamud plugins. Each integration automatically detects its target and silently disables itself when the target plugin is missing.</value>
</data>
@@ -1048,4 +960,210 @@
<data name="Settings_ThemeAndLayout_ReduceMotion_Description" xml:space="preserve">
<value>Disables the theme crossfade, the sidebar and card-row hover animations, and the unread-tab pulse. Theme switches and hover states apply instantly instead.</value>
</data>
<!-- Failed-tell notification -->
<data name="FailedTell_Notification_Generic" xml:space="preserve">
<value>A tell could not be delivered.</value>
</data>
<data name="FailedTell_Notification_Named" xml:space="preserve">
<value>Tell to {0} could not be delivered.</value>
</data>
<data name="Settings_Chat_NotifyFailedTell_Name" xml:space="preserve">
<value>Notify on failed tell</value>
</data>
<data name="Settings_Chat_NotifyFailedTell_Description" xml:space="preserve">
<value>Show a toast when a tell you sent could not be delivered (recipient offline, in an instance, or blocking you).</value>
</data>
<!-- Per-tab notification sound -->
<data name="Tabs_NotificationSound_Enable_Name" xml:space="preserve">
<value>Notification sound</value>
</data>
<data name="Tabs_NotificationSound_Description" xml:space="preserve">
<value>Play a sound when a message arrives in this tab while you are looking at a different tab. Respects the global sound toggle.</value>
</data>
<data name="Tabs_NotificationSound_Option" xml:space="preserve">
<value>Sound</value>
</data>
<data name="Tabs_NotificationSound_Preview" xml:space="preserve">
<value>Preview the selected sound</value>
</data>
<data name="Tabs_NotificationSound_CustomOption" xml:space="preserve">
<value>Hellion sound</value>
</data>
<!-- Scroll-to-bottom and item/flag linking -->
<data name="ChatLog_ScrollToBottom_Tooltip" xml:space="preserve">
<value>Jump to the latest message</value>
</data>
<data name="ChatLog_Insert_MapFlag" xml:space="preserve">
<value>Insert map flag &lt;flag&gt;</value>
</data>
<data name="ChatLog_Insert_ItemLink" xml:space="preserve">
<value>Insert linked item &lt;item&gt;</value>
</data>
<!-- v1.5.6: plugin-disclosure warning -->
<data name="Settings_Chat_NotifyPluginDisclosure_Name" xml:space="preserve">
<value>Warn before sending plugin-only symbols</value>
</data>
<data name="Settings_Chat_NotifyPluginDisclosure_Description" xml:space="preserve">
<value>Show a warning when a message you are about to send contains symbols that only display correctly for players running HellionChat or a similar plugin.</value>
</data>
<data name="ChatInput_PluginDisclosure_Warning" xml:space="preserve">
<value>This message contains plugin-only symbols that other players may see as empty boxes. Press Enter again to send anyway.</value>
</data>
<!-- v1.5.6: world suffix + name format display options -->
<data name="Settings_Chat_WorldSuffix_Name" xml:space="preserve">
<value>World suffix</value>
</data>
<data name="Settings_Chat_WorldSuffix_Description" xml:space="preserve">
<value>When to append the home world to a sender's name in the chat log.</value>
</data>
<data name="Settings_Chat_NameForm_Name" xml:space="preserve">
<value>Name format</value>
</data>
<data name="Settings_Chat_NameForm_Description" xml:space="preserve">
<value>How sender names are shown in the chat log. The full name is the default.</value>
</data>
<data name="NameDisplay_WorldSuffix_Never" xml:space="preserve">
<value>Never</value>
</data>
<data name="NameDisplay_WorldSuffix_OtherWorldOnly" xml:space="preserve">
<value>Other worlds only</value>
</data>
<data name="NameDisplay_WorldSuffix_Always" xml:space="preserve">
<value>Always</value>
</data>
<data name="NameDisplay_NameForm_Full" xml:space="preserve">
<value>Full name</value>
</data>
<data name="NameDisplay_NameForm_FirstNameOnly" xml:space="preserve">
<value>First name only</value>
</data>
<data name="NameDisplay_NameForm_Initials" xml:space="preserve">
<value>Initials</value>
</data>
<!-- v1.5.6: inactive window opacity -->
<data name="Settings_ThemeAndLayout_WindowOpacityInactive_Name" xml:space="preserve">
<value>Inactive window opacity</value>
</data>
<data name="Settings_ThemeAndLayout_WindowOpacityInactive_Description" xml:space="preserve">
<value>Background opacity of the main chat window while it is not focused. The slider above sets the focused value. A per-window override in Dalamud's window pinning menu still takes precedence over both.</value>
</data>
<!-- v1.5.6: custom sound volume -->
<data name="Settings_General_CustomSoundVolume_Name" xml:space="preserve">
<value>Custom sound volume</value>
</data>
<data name="Settings_General_CustomSoundVolume_Description" xml:space="preserve">
<value>Playback volume for the three bundled custom notification sounds. Does not affect the 16 game sounds.</value>
</data>
<!-- v1.5.6: General tab section titles (collapsible, R6) -->
<data name="Settings_Section_Input" xml:space="preserve">
<value>Input</value>
</data>
<data name="Settings_Section_Sound" xml:space="preserve">
<value>Sound</value>
</data>
<data name="Settings_Section_Language" xml:space="preserve">
<value>Language</value>
</data>
<data name="Settings_Section_Performance" xml:space="preserve">
<value>Performance</value>
</data>
<data name="Settings_Section_Sound_TabsHint" xml:space="preserve">
<value>Which sound plays per tab is set in the Channels tab.</value>
</data>
<!-- v1.5.6: Chat tab section titles (collapsible, R6) -->
<data name="Settings_Section_Messages" xml:space="preserve">
<value>Messages</value>
</data>
<data name="Settings_Section_InputPreview" xml:space="preserve">
<value>Input &amp; preview</value>
</data>
<data name="Settings_Section_AutoTellTabs" xml:space="preserve">
<value>Auto-tell tabs</value>
</data>
<data name="Settings_Section_Emotes" xml:space="preserve">
<value>Emotes</value>
</data>
<data name="Settings_Section_LinksTooltips" xml:space="preserve">
<value>Links &amp; tooltips</value>
</data>
<data name="Settings_Section_NoviceNetwork" xml:space="preserve">
<value>Novice network</value>
</data>
<!-- v1.5.6: Appearance tab section titles (collapsible, R6) -->
<data name="Settings_Section_Theme" xml:space="preserve">
<value>Theme</value>
</data>
<data name="Settings_Section_Fonts" xml:space="preserve">
<value>Fonts</value>
</data>
<data name="Settings_Section_Colours" xml:space="preserve">
<value>Colours</value>
</data>
<data name="Settings_Section_WindowStyle" xml:space="preserve">
<value>Window style</value>
</data>
<data name="Settings_Section_Timestamps" xml:space="preserve">
<value>Timestamps</value>
</data>
<data name="Settings_Section_Animations" xml:space="preserve">
<value>Animations</value>
</data>
<!-- v1.5.6: Window tab collapsible section titles (R6) -->
<data name="Settings_Section_Hide" xml:space="preserve">
<value>Hide</value>
</data>
<data name="Settings_Section_InactivityHide" xml:space="preserve">
<value>Hide when inactive</value>
</data>
<data name="Settings_Section_Frame" xml:space="preserve">
<value>Frame</value>
</data>
<!-- v1.5.6: Tabs tab per-tab-item sub-section titles (R6) -->
<data name="Settings_Section_Tab_Channels" xml:space="preserve">
<value>Channels</value>
</data>
<data name="Settings_Section_Tab_Display" xml:space="preserve">
<value>Display</value>
</data>
<data name="Settings_Section_Tab_Notification" xml:space="preserve">
<value>Notification</value>
</data>
<data name="Settings_Section_Tab_Input" xml:space="preserve">
<value>Input</value>
</data>
<data name="Settings_Section_Tab_PopOut" xml:space="preserve">
<value>Pop-out window</value>
</data>
<data name="Settings_Section_Tab_Volume_AllTabsHint" xml:space="preserve">
<value>This volume applies to all tabs.</value>
</data>
<!-- v1.5.6: About tab collapsible section titles (R6) -->
<data name="Settings_Section_Extensions" xml:space="preserve">
<value>Extensions</value>
</data>
<data name="Settings_Section_PluginInfo" xml:space="preserve">
<value>Plugin info</value>
</data>
<data name="Settings_Section_Project" xml:space="preserve">
<value>The Project</value>
</data>
<data name="Settings_Section_Translators" xml:space="preserve">
<value>Translators</value>
</data>
<data name="Settings_Section_Changelog" xml:space="preserve">
<value>Changelog</value>
</data>
</root>
+195 -103
View File
@@ -12,9 +12,6 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Privacy_Tab_Title" xml:space="preserve">
<value>Confidențialitate</value>
</data>
<data name="Privacy_FilterEnabled_Name" xml:space="preserve">
<value>Activează filtrul de confidențialitate</value>
</data>
@@ -24,9 +21,6 @@
<data name="Privacy_FilterEnabled_StorageOnly_Help" xml:space="preserve">
<value>Filtrul controlează doar ce se scrie în baza de date locală. Jurnalul de chat afișează în continuare fiecare mesaj în timp real; canalele excluse nu mai sunt stocate, atât. Dacă vrei să elimini canale și din afișajul vizibil, folosește filtrele normale de tab din joc.</value>
</data>
<data name="Privacy_Filter_Tree_Heading" xml:space="preserve">
<value>Filtru de confidențialitate și listă albă</value>
</data>
<data name="Privacy_Whitelist_Help" xml:space="preserve">
<value>Alege ce canale sunt salvate în baza de date locală. Implicit urmează minimizarea datelor: doar conversațiile tale. Folosește butoanele de mai jos pentru a aplica o configurație prestabilită.</value>
</data>
@@ -597,18 +591,6 @@
</data>
<!-- Hellion Chat — General tab section headings -->
<data name="Settings_General_Input_Heading" xml:space="preserve">
<value>Introducere text</value>
</data>
<data name="Settings_General_Audio_Heading" xml:space="preserve">
<value>Audio &amp; notificări</value>
</data>
<data name="Settings_General_Performance_Heading" xml:space="preserve">
<value>Performanță</value>
</data>
<data name="Settings_General_Language_Heading" xml:space="preserve">
<value>Limbă &amp; ajutoare de introducere</value>
</data>
<!-- Hellion Chat — Appearance tab section headings -->
<data name="Settings_Appearance_Theme_Heading" xml:space="preserve">
@@ -625,32 +607,11 @@
</data>
<!-- Hellion Chat — Window tab section headings -->
<data name="Settings_Window_Hide_Heading" xml:space="preserve">
<value>Ascundere</value>
</data>
<data name="Settings_Window_InactivityHide_Heading" xml:space="preserve">
<value>Ascundere la inactivitate</value>
</data>
<data name="Settings_Window_Frame_Heading" xml:space="preserve">
<value>Cadru fereastră</value>
</data>
<data name="Settings_Window_Tooltips_Heading" xml:space="preserve">
<value>Tooltipuri</value>
</data>
<!-- Hellion Chat — Chat tab section headings -->
<data name="Settings_Chat_AutoTellTabs_Heading" xml:space="preserve">
<value>Auto-Tell-Tabs</value>
</data>
<data name="Settings_Chat_Behaviour_Heading" xml:space="preserve">
<value>Comportament mesaje</value>
</data>
<data name="Settings_Chat_Preview_Heading" xml:space="preserve">
<value>Previzualizare</value>
</data>
<data name="Settings_Chat_Emotes_Heading" xml:space="preserve">
<value>Emote-uri</value>
</data>
<!-- Hellion Chat — Chat tab SymbolPicker -->
<data name="Settings_Chat_SymbolPicker_Enable_Name" xml:space="preserve">
@@ -672,15 +633,6 @@
</data>
<!-- Hellion Chat — Information tab section headings -->
<data name="Settings_Information_VersionInfo_Heading" xml:space="preserve">
<value>Informații versiune</value>
</data>
<data name="Settings_Information_About_Heading" xml:space="preserve">
<value>Despre HellionChat</value>
</data>
<data name="Settings_Information_Changelog_Heading" xml:space="preserve">
<value>Changelog</value>
</data>
<!-- Hellion Chat — Default tab presets (channel-specific) -->
<data name="Tabs_Presets_System" xml:space="preserve">
@@ -811,12 +763,6 @@
<data name="Settings_Card_Tabs_Subtext" xml:space="preserve">
<value>Creează și configurează tab-uri de chat personalizate.</value>
</data>
<data name="Settings_Card_Privacy_Title" xml:space="preserve">
<value>Confidențialitate</value>
</data>
<data name="Settings_Card_Privacy_Subtext" xml:space="preserve">
<value>Filtru de confidențialitate per canal și ce poate fi stocat.</value>
</data>
<data name="Settings_Card_Database_Title" xml:space="preserve">
<value>Bază de date</value>
</data>
@@ -824,10 +770,10 @@
<value>Stocare, migrare, curățare veche</value>
</data>
<data name="Settings_Card_Information_Title" xml:space="preserve">
<value>Informații</value>
<value>Despre</value>
</data>
<data name="Settings_Card_Information_Subtext" xml:space="preserve">
<value>Versiune, misiune, licență și changelog.</value>
<value>Extensii, versiune, informații despre proiect, traducători și changelog.</value>
</data>
<data name="Settings_Tab_Themes" xml:space="preserve">
<value>Teme</value>
@@ -868,29 +814,11 @@
<data name="Appearance_UseCompactDensity_Description" xml:space="preserve">
<value>Comută aspectul mesajelor din stilul implicit card-row înapoi la rânduri simple `[HH:mm] Expeditor: Text`.</value>
</data>
<data name="Settings_Card_ThemeAndLayout_Title" xml:space="preserve">
<value>Temă &amp; aspect</value>
</data>
<data name="Settings_Card_ThemeAndLayout_Subtext" xml:space="preserve">
<value>Temă, cadru fereastră și stil marcaje de timp.</value>
</data>
<data name="Settings_Card_FontsAndColours_Title" xml:space="preserve">
<value>Fonturi &amp; culori</value>
</data>
<data name="Settings_Card_FontsAndColours_Subtext" xml:space="preserve">
<value>Font, dimensiune font și culori chat per canal.</value>
</data>
<data name="Settings_Card_DataManagement_Title" xml:space="preserve">
<value>Gestionarea datelor</value>
<value>Date și confidențialitate</value>
</data>
<data name="Settings_Card_DataManagement_Subtext" xml:space="preserve">
<value>Retenție, curățare, export și statistici bază de date.</value>
</data>
<data name="Settings_Card_Integrations_Title" xml:space="preserve">
<value>Integrări</value>
</data>
<data name="Settings_Card_Integrations_Subtext" xml:space="preserve">
<value>Alte plugin-uri Dalamud cu care HellionChat colaborează. Integrări viitoare în previzualizare.</value>
<value>Filtru de confidențialitate, retenție, curățare, export și statistici bază de date.</value>
</data>
<data name="Settings_ThemeAndLayout_Theme_Heading" xml:space="preserve">
<value>Temă</value>
@@ -907,39 +835,12 @@
<data name="Settings_ThemeAndLayout_WindowOpacity_Description" xml:space="preserve">
<value>Cât de transparent este fundalul ferestrei. Valorile mai mici lasă mai mult din joc să se vadă. Sfat: meniul per-fereastră al Dalamud (hamburger în bara de titlu) oferă suprascrieri per fereastră pentru opacitate, blur de fundal, click-through și fixare: acestea au prioritate față de acest slider pentru fereastra respectivă.</value>
</data>
<data name="Settings_FontsAndColours_Fonts_Heading" xml:space="preserve">
<value>Fonturi</value>
</data>
<data name="Settings_FontsAndColours_Colours_Heading" xml:space="preserve">
<value>Culori chat</value>
</data>
<data name="Settings_DataManagement_Storage_Heading" xml:space="preserve">
<value>Stocare</value>
</data>
<data name="Settings_DataManagement_Retention_Heading" xml:space="preserve">
<value>Retenție</value>
</data>
<data name="Settings_DataManagement_Cleanup_Heading" xml:space="preserve">
<value>Curățare</value>
</data>
<data name="Settings_DataManagement_Export_Heading" xml:space="preserve">
<value>Export</value>
</data>
<data name="Settings_DataManagement_DbViewer_Heading" xml:space="preserve">
<value>Vizualizator bază de date</value>
</data>
<data name="Settings_DataManagement_Advanced_Heading" xml:space="preserve">
<value>Avansat (Shift+clic pentru deschidere)</value>
</data>
<data name="Settings_Window_Frame_Behaviour_Heading" xml:space="preserve">
<value>Comportament</value>
</data>
<data name="Migration_v16_OverrideStyle_Toast" xml:space="preserve">
<value>Hellion Chat 1.2.1 a reorganizat meniul de setări și a eliminat vechea opțiune „Override style" (înlocuită de sistemul de teme din 1.1.0). Setările tale rămase sunt nemodificate. Transparența ferestrei a fost migrată la „Temă &amp; aspect". O copie de rezervă a configurației anterioare se află la pluginConfigs/HellionChat.json.pre-v16-backup lângă fișierul activ HellionChat.json.</value>
</data>
<data name="Settings_Tab_Integrations" xml:space="preserve">
<value>Integrări</value>
</data>
<data name="Settings_Integrations_Intro" xml:space="preserve">
<value>Integrările de plugin-uri permit HellionChat să colaboreze cu alte plugin-uri Dalamud instalate. Fiecare integrare își detectează automat ținta și se dezactivează în liniște când plugin-ul țintă lipsește.</value>
</data>
@@ -1054,4 +955,195 @@
<value>Dezactivează tranziția temelor, animațiile la trecerea cursorului peste bara laterală și carduri și pulsația filelor necitite. Schimbările de temă și stările de cursor se aplică instantaneu.</value>
<comment>AI-assisted machine translation. Pending native-speaker review.</comment>
</data>
<!-- Hellion Chat — Settings Overhaul section titles (v1.5.6) -->
<data name="Settings_Section_Input" xml:space="preserve">
<value>Introducere</value>
</data>
<data name="Settings_Section_Sound" xml:space="preserve">
<value>Sunet</value>
</data>
<data name="Settings_Section_Language" xml:space="preserve">
<value>Limbă</value>
</data>
<data name="Settings_Section_Performance" xml:space="preserve">
<value>Performanță</value>
</data>
<data name="Settings_Section_Sound_TabsHint" xml:space="preserve">
<value>Sunetul redat per filă se setează în fila Canale.</value>
</data>
<data name="Settings_Section_Theme" xml:space="preserve">
<value>Temă</value>
</data>
<data name="Settings_Section_Fonts" xml:space="preserve">
<value>Fonturi</value>
</data>
<data name="Settings_Section_Colours" xml:space="preserve">
<value>Culori</value>
</data>
<data name="Settings_Section_WindowStyle" xml:space="preserve">
<value>Stil fereastră</value>
</data>
<data name="Settings_Section_Timestamps" xml:space="preserve">
<value>Marcaje de timp</value>
</data>
<data name="Settings_Section_Animations" xml:space="preserve">
<value>Animații</value>
</data>
<data name="Settings_Section_Messages" xml:space="preserve">
<value>Mesaje</value>
</data>
<data name="Settings_Section_InputPreview" xml:space="preserve">
<value>Introducere și previzualizare</value>
</data>
<data name="Settings_Section_AutoTellTabs" xml:space="preserve">
<value>File tell automate</value>
</data>
<data name="Settings_Section_Emotes" xml:space="preserve">
<value>Emote-uri</value>
</data>
<data name="Settings_Section_LinksTooltips" xml:space="preserve">
<value>Linkuri și sugestii</value>
</data>
<data name="Settings_Section_NoviceNetwork" xml:space="preserve">
<value>Rețeaua novicilor</value>
</data>
<data name="Settings_Section_Hide" xml:space="preserve">
<value>Ascundere</value>
</data>
<data name="Settings_Section_InactivityHide" xml:space="preserve">
<value>Ascunde când inactiv</value>
</data>
<data name="Settings_Section_Frame" xml:space="preserve">
<value>Cadru</value>
</data>
<data name="Settings_Section_Tab_Channels" xml:space="preserve">
<value>Canale</value>
</data>
<data name="Settings_Section_Tab_Display" xml:space="preserve">
<value>Afișaj</value>
</data>
<data name="Settings_Section_Tab_Notification" xml:space="preserve">
<value>Notificare</value>
</data>
<data name="Settings_Section_Tab_Input" xml:space="preserve">
<value>Introducere</value>
</data>
<data name="Settings_Section_Tab_PopOut" xml:space="preserve">
<value>Fereastră detașată</value>
</data>
<data name="Settings_Section_Tab_Volume_AllTabsHint" xml:space="preserve">
<value>Acest volum se aplică tuturor filelor.</value>
</data>
<data name="Settings_Section_PrivacyFilter" xml:space="preserve">
<value>Filtru de confidențialitate</value>
</data>
<data name="Settings_Section_Storage" xml:space="preserve">
<value>Stocare</value>
</data>
<data name="Settings_Section_Retention" xml:space="preserve">
<value>Retenție</value>
</data>
<data name="Settings_Section_Cleanup" xml:space="preserve">
<value>Curățare</value>
</data>
<data name="Settings_Section_Export" xml:space="preserve">
<value>Export</value>
</data>
<data name="Settings_Section_Database" xml:space="preserve">
<value>Bază de date</value>
</data>
<data name="Settings_Section_Extensions" xml:space="preserve">
<value>Extensii</value>
</data>
<data name="Settings_Section_PluginInfo" xml:space="preserve">
<value>Informații plugin</value>
</data>
<data name="Settings_Section_Project" xml:space="preserve">
<value>Proiectul</value>
</data>
<data name="Settings_Section_Translators" xml:space="preserve">
<value>Traducători</value>
</data>
<data name="Settings_Section_Changelog" xml:space="preserve">
<value>Jurnal de modificări</value>
</data>
<data name="Settings_Chat_NotifyFailedTell_Name" xml:space="preserve">
<value>Notifică la tell eșuat</value>
</data>
<data name="Settings_Chat_NotifyFailedTell_Description" xml:space="preserve">
<value>Afișează o notificare când un tell trimis nu a putut fi livrat (destinatarul este offline, într-o instanță sau te-a blocat).</value>
</data>
<data name="Settings_Chat_NotifyPluginDisclosure_Name" xml:space="preserve">
<value>Avertizare înainte de trimiterea simbolurilor exclusiv plugin</value>
</data>
<data name="Settings_Chat_NotifyPluginDisclosure_Description" xml:space="preserve">
<value>Afișează un avertisment când un mesaj pe care urmează să-l trimiți conține simboluri care se afișează corect doar pentru jucătorii care folosesc HellionChat sau un plugin similar.</value>
</data>
<data name="Settings_Chat_WorldSuffix_Name" xml:space="preserve">
<value>Sufix lume</value>
</data>
<data name="Settings_Chat_WorldSuffix_Description" xml:space="preserve">
<value>Când să adauge lumea de origine la numele expeditorului în jurnalul de chat.</value>
</data>
<data name="Settings_Chat_NameForm_Name" xml:space="preserve">
<value>Format nume</value>
</data>
<data name="Settings_Chat_NameForm_Description" xml:space="preserve">
<value>Cum sunt afișate numele expeditorilor în jurnalul de chat. Numele complet este valoarea implicită.</value>
</data>
<data name="NameDisplay_WorldSuffix_Never" xml:space="preserve">
<value>Niciodată</value>
</data>
<data name="NameDisplay_WorldSuffix_OtherWorldOnly" xml:space="preserve">
<value>Doar alte lumi</value>
</data>
<data name="NameDisplay_WorldSuffix_Always" xml:space="preserve">
<value>Întotdeauna</value>
</data>
<data name="NameDisplay_NameForm_Full" xml:space="preserve">
<value>Nume complet</value>
</data>
<data name="NameDisplay_NameForm_FirstNameOnly" xml:space="preserve">
<value>Doar prenume</value>
</data>
<data name="NameDisplay_NameForm_Initials" xml:space="preserve">
<value>Inițiale</value>
</data>
<data name="Settings_General_CustomSoundVolume_Name" xml:space="preserve">
<value>Volum sunet personalizat</value>
</data>
<data name="Settings_General_CustomSoundVolume_Description" xml:space="preserve">
<value>Volumul de redare pentru cele trei sunete de notificare personalizate incluse. Nu afectează cele 16 sunete din joc.</value>
</data>
<data name="Settings_ThemeAndLayout_WindowOpacityInactive_Name" xml:space="preserve">
<value>Opacitate fereastră inactivă</value>
</data>
<data name="Settings_ThemeAndLayout_WindowOpacityInactive_Description" xml:space="preserve">
<value>Opacitatea fundalului ferestrei principale de chat când nu este focalizată. Cursorul de mai sus setează valoarea focalizată. O suprascriere per fereastră din meniul de fixare Dalamud are prioritate față de ambele.</value>
</data>
<data name="Tabs_NotificationSound_Enable_Name" xml:space="preserve">
<value>Sunet de notificare</value>
</data>
<data name="Tabs_NotificationSound_Description" xml:space="preserve">
<value>Redă un sunet când sosește un mesaj pe această filă în timp ce te uiți la altă filă. Respectă comutatorul global de sunet.</value>
</data>
<data name="Tabs_NotificationSound_Option" xml:space="preserve">
<value>Sunet</value>
</data>
<data name="Tabs_NotificationSound_Preview" xml:space="preserve">
<value>Previzualizare sunet selectat</value>
</data>
<data name="Tabs_NotificationSound_CustomOption" xml:space="preserve">
<value>Sunet Hellion</value>
</data>
<data name="FailedTell_Notification_Generic" xml:space="preserve">
<value>Un tell nu a putut fi livrat.</value>
</data>
<data name="FailedTell_Notification_Named" xml:space="preserve">
<value>Tell-ul către {0} nu a putut fi livrat.</value>
</data>
<data name="ChatInput_PluginDisclosure_Warning" xml:space="preserve">
<value>Acest mesaj conține simboluri exclusiv plugin pe care alți jucători le-ar putea vedea ca casete goale. Apasă Enter din nou pentru a trimite oricum.</value>
</data>
</root>
+195 -103
View File
@@ -12,9 +12,6 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Privacy_Tab_Title" xml:space="preserve">
<value>Конфиденциальность</value>
</data>
<data name="Privacy_FilterEnabled_Name" xml:space="preserve">
<value>Включить фильтр конфиденциальности</value>
</data>
@@ -24,9 +21,6 @@
<data name="Privacy_FilterEnabled_StorageOnly_Help" xml:space="preserve">
<value>Фильтр управляет только тем, что записывается в локальную базу данных. В журнале чата по-прежнему отображаются все сообщения в реальном времени; исключённые каналы просто больше не сохраняются. Если вы хотите убрать каналы из видимого отображения, используйте обычные фильтры вкладок чата в игре.</value>
</data>
<data name="Privacy_Filter_Tree_Heading" xml:space="preserve">
<value>Фильтр конфиденциальности и белый список</value>
</data>
<data name="Privacy_Whitelist_Help" xml:space="preserve">
<value>Выберите, какие каналы сохраняются в локальную базу данных. По умолчанию применяется минимизация данных: только ваши собственные разговоры. Используйте кнопки ниже для применения пресета.</value>
</data>
@@ -597,18 +591,6 @@
</data>
<!-- Hellion Chat — General tab section headings -->
<data name="Settings_General_Input_Heading" xml:space="preserve">
<value>Ввод</value>
</data>
<data name="Settings_General_Audio_Heading" xml:space="preserve">
<value>Звук &amp; уведомления</value>
</data>
<data name="Settings_General_Performance_Heading" xml:space="preserve">
<value>Производительность</value>
</data>
<data name="Settings_General_Language_Heading" xml:space="preserve">
<value>Язык &amp; помощь при вводе</value>
</data>
<!-- Hellion Chat — Appearance tab section headings -->
<data name="Settings_Appearance_Theme_Heading" xml:space="preserve">
@@ -625,32 +607,11 @@
</data>
<!-- Hellion Chat — Window tab section headings -->
<data name="Settings_Window_Hide_Heading" xml:space="preserve">
<value>Скрытие</value>
</data>
<data name="Settings_Window_InactivityHide_Heading" xml:space="preserve">
<value>Скрытие по бездействию</value>
</data>
<data name="Settings_Window_Frame_Heading" xml:space="preserve">
<value>Рамка окна</value>
</data>
<data name="Settings_Window_Tooltips_Heading" xml:space="preserve">
<value>Подсказки</value>
</data>
<!-- Hellion Chat — Chat tab section headings -->
<data name="Settings_Chat_AutoTellTabs_Heading" xml:space="preserve">
<value>Auto-Tell-Tabs</value>
</data>
<data name="Settings_Chat_Behaviour_Heading" xml:space="preserve">
<value>Поведение сообщений</value>
</data>
<data name="Settings_Chat_Preview_Heading" xml:space="preserve">
<value>Предпросмотр</value>
</data>
<data name="Settings_Chat_Emotes_Heading" xml:space="preserve">
<value>Эмоции</value>
</data>
<!-- Hellion Chat — Chat tab SymbolPicker -->
<data name="Settings_Chat_SymbolPicker_Enable_Name" xml:space="preserve">
@@ -672,15 +633,6 @@
</data>
<!-- Hellion Chat — Information tab section headings -->
<data name="Settings_Information_VersionInfo_Heading" xml:space="preserve">
<value>Версия</value>
</data>
<data name="Settings_Information_About_Heading" xml:space="preserve">
<value>О HellionChat</value>
</data>
<data name="Settings_Information_Changelog_Heading" xml:space="preserve">
<value>Changelog</value>
</data>
<!-- Hellion Chat — Default tab presets (channel-specific) -->
<data name="Tabs_Presets_System" xml:space="preserve">
@@ -811,12 +763,6 @@
<data name="Settings_Card_Tabs_Subtext" xml:space="preserve">
<value>Создание и настройка пользовательских вкладок чата.</value>
</data>
<data name="Settings_Card_Privacy_Title" xml:space="preserve">
<value>Конфиденциальность</value>
</data>
<data name="Settings_Card_Privacy_Subtext" xml:space="preserve">
<value>Фильтр конфиденциальности по каналу и что может сохраняться.</value>
</data>
<data name="Settings_Card_Database_Title" xml:space="preserve">
<value>База данных</value>
</data>
@@ -824,10 +770,10 @@
<value>Хранение, миграция, очистка устаревшего</value>
</data>
<data name="Settings_Card_Information_Title" xml:space="preserve">
<value>Информация</value>
<value>О плагине</value>
</data>
<data name="Settings_Card_Information_Subtext" xml:space="preserve">
<value>Версия, миссия, лицензия и changelog.</value>
<value>Расширения, версия, информация о проекте, переводчики и changelog.</value>
</data>
<data name="Settings_Tab_Themes" xml:space="preserve">
<value>Темы</value>
@@ -868,29 +814,11 @@
<data name="Appearance_UseCompactDensity_Description" xml:space="preserve">
<value>Переключает макет сообщений с карточного отображения по умолчанию обратно на однострочный формат `[HH:mm] Отправитель: Текст`.</value>
</data>
<data name="Settings_Card_ThemeAndLayout_Title" xml:space="preserve">
<value>Theme &amp; Layout</value>
</data>
<data name="Settings_Card_ThemeAndLayout_Subtext" xml:space="preserve">
<value>Тема, рамка окна и стиль временны́х меток.</value>
</data>
<data name="Settings_Card_FontsAndColours_Title" xml:space="preserve">
<value>Fonts &amp; Colours</value>
</data>
<data name="Settings_Card_FontsAndColours_Subtext" xml:space="preserve">
<value>Шрифт, размер шрифта и цвета чата по каналам.</value>
</data>
<data name="Settings_Card_DataManagement_Title" xml:space="preserve">
<value>Управление данными</value>
<value>Данные и конфиденциальность</value>
</data>
<data name="Settings_Card_DataManagement_Subtext" xml:space="preserve">
<value>Хранение, очистка, экспорт и статистика базы данных.</value>
</data>
<data name="Settings_Card_Integrations_Title" xml:space="preserve">
<value>Интеграции</value>
</data>
<data name="Settings_Card_Integrations_Subtext" xml:space="preserve">
<value>Другие плагины Dalamud, с которыми работает HellionChat. Предстоящие интеграции в предпросмотре.</value>
<value>Фильтр конфиденциальности, хранение, очистка, экспорт и статистика базы данных.</value>
</data>
<data name="Settings_ThemeAndLayout_Theme_Heading" xml:space="preserve">
<value>Theme</value>
@@ -907,39 +835,12 @@
<data name="Settings_ThemeAndLayout_WindowOpacity_Description" xml:space="preserve">
<value>Степень прозрачности фона окна. Меньшие значения позволяют больше просвечивать игре. Совет: меню Dalamud для каждого окна (иконка «гамбургер» в заголовке окна) предлагает индивидуальные настройки прозрачности, размытия фона, сквозных кликов и закрепления — они имеют приоритет над этим слайдером для соответствующего окна.</value>
</data>
<data name="Settings_FontsAndColours_Fonts_Heading" xml:space="preserve">
<value>Шрифты</value>
</data>
<data name="Settings_FontsAndColours_Colours_Heading" xml:space="preserve">
<value>Цвета чата</value>
</data>
<data name="Settings_DataManagement_Storage_Heading" xml:space="preserve">
<value>Хранение</value>
</data>
<data name="Settings_DataManagement_Retention_Heading" xml:space="preserve">
<value>Сроки хранения</value>
</data>
<data name="Settings_DataManagement_Cleanup_Heading" xml:space="preserve">
<value>Очистка</value>
</data>
<data name="Settings_DataManagement_Export_Heading" xml:space="preserve">
<value>Экспорт</value>
</data>
<data name="Settings_DataManagement_DbViewer_Heading" xml:space="preserve">
<value>Просмотр базы данных</value>
</data>
<data name="Settings_DataManagement_Advanced_Heading" xml:space="preserve">
<value>Дополнительно (Shift+клик для открытия)</value>
</data>
<data name="Settings_Window_Frame_Behaviour_Heading" xml:space="preserve">
<value>Поведение</value>
</data>
<data name="Migration_v16_OverrideStyle_Toast" xml:space="preserve">
<value>Hellion Chat 1.2.1 реорганизовал меню настроек и удалил устаревшую опцию «Override style» (заменена системой тем из версии 1.1.0). Остальные настройки не изменились. Прозрачность окна перенесена в раздел «Theme &amp; Layout». Резервная копия предыдущей конфигурации расположена по адресу pluginConfigs/HellionChat.json.pre-v16-backup рядом с активным файлом HellionChat.json.</value>
</data>
<data name="Settings_Tab_Integrations" xml:space="preserve">
<value>Интеграции</value>
</data>
<data name="Settings_Integrations_Intro" xml:space="preserve">
<value>Интеграции плагинов позволяют HellionChat работать совместно с другими установленными плагинами Dalamud. Каждая интеграция автоматически определяет целевой плагин и тихо отключается, если тот не установлен.</value>
</data>
@@ -1054,4 +955,195 @@
<value>Отключает плавное переключение тем, анимации наведения для боковой панели и карточек, а также пульсацию непрочитанных вкладок. Смена темы и состояния наведения применяются мгновенно.</value>
<comment>AI-assisted machine translation. Pending native-speaker review.</comment>
</data>
<!-- Hellion Chat — Settings Overhaul section titles (v1.5.6) -->
<data name="Settings_Section_Input" xml:space="preserve">
<value>Ввод</value>
</data>
<data name="Settings_Section_Sound" xml:space="preserve">
<value>Звук</value>
</data>
<data name="Settings_Section_Language" xml:space="preserve">
<value>Язык</value>
</data>
<data name="Settings_Section_Performance" xml:space="preserve">
<value>Производительность</value>
</data>
<data name="Settings_Section_Sound_TabsHint" xml:space="preserve">
<value>Звук, воспроизводимый на каждой вкладке, задаётся на вкладке «Каналы».</value>
</data>
<data name="Settings_Section_Theme" xml:space="preserve">
<value>Тема</value>
</data>
<data name="Settings_Section_Fonts" xml:space="preserve">
<value>Шрифты</value>
</data>
<data name="Settings_Section_Colours" xml:space="preserve">
<value>Цвета</value>
</data>
<data name="Settings_Section_WindowStyle" xml:space="preserve">
<value>Стиль окна</value>
</data>
<data name="Settings_Section_Timestamps" xml:space="preserve">
<value>Временны́е метки</value>
</data>
<data name="Settings_Section_Animations" xml:space="preserve">
<value>Анимации</value>
</data>
<data name="Settings_Section_Messages" xml:space="preserve">
<value>Сообщения</value>
</data>
<data name="Settings_Section_InputPreview" xml:space="preserve">
<value>Ввод и предпросмотр</value>
</data>
<data name="Settings_Section_AutoTellTabs" xml:space="preserve">
<value>Авто-вкладки tell</value>
</data>
<data name="Settings_Section_Emotes" xml:space="preserve">
<value>Эмоции</value>
</data>
<data name="Settings_Section_LinksTooltips" xml:space="preserve">
<value>Ссылки и подсказки</value>
</data>
<data name="Settings_Section_NoviceNetwork" xml:space="preserve">
<value>Канал новичков</value>
</data>
<data name="Settings_Section_Hide" xml:space="preserve">
<value>Скрыть</value>
</data>
<data name="Settings_Section_InactivityHide" xml:space="preserve">
<value>Скрывать при бездействии</value>
</data>
<data name="Settings_Section_Frame" xml:space="preserve">
<value>Рамка</value>
</data>
<data name="Settings_Section_Tab_Channels" xml:space="preserve">
<value>Каналы</value>
</data>
<data name="Settings_Section_Tab_Display" xml:space="preserve">
<value>Отображение</value>
</data>
<data name="Settings_Section_Tab_Notification" xml:space="preserve">
<value>Уведомление</value>
</data>
<data name="Settings_Section_Tab_Input" xml:space="preserve">
<value>Ввод</value>
</data>
<data name="Settings_Section_Tab_PopOut" xml:space="preserve">
<value>Всплывающее окно</value>
</data>
<data name="Settings_Section_Tab_Volume_AllTabsHint" xml:space="preserve">
<value>Этот уровень громкости применяется ко всем вкладкам.</value>
</data>
<data name="Settings_Section_PrivacyFilter" xml:space="preserve">
<value>Фильтр конфиденциальности</value>
</data>
<data name="Settings_Section_Storage" xml:space="preserve">
<value>Хранилище</value>
</data>
<data name="Settings_Section_Retention" xml:space="preserve">
<value>Хранение</value>
</data>
<data name="Settings_Section_Cleanup" xml:space="preserve">
<value>Очистка</value>
</data>
<data name="Settings_Section_Export" xml:space="preserve">
<value>Экспорт</value>
</data>
<data name="Settings_Section_Database" xml:space="preserve">
<value>База данных</value>
</data>
<data name="Settings_Section_Extensions" xml:space="preserve">
<value>Расширения</value>
</data>
<data name="Settings_Section_PluginInfo" xml:space="preserve">
<value>Информация о плагине</value>
</data>
<data name="Settings_Section_Project" xml:space="preserve">
<value>Проект</value>
</data>
<data name="Settings_Section_Translators" xml:space="preserve">
<value>Переводчики</value>
</data>
<data name="Settings_Section_Changelog" xml:space="preserve">
<value>Список изменений</value>
</data>
<data name="Settings_Chat_NotifyFailedTell_Name" xml:space="preserve">
<value>Уведомление о неудачном сообщении</value>
</data>
<data name="Settings_Chat_NotifyFailedTell_Description" xml:space="preserve">
<value>Показывает уведомление, если отправленное сообщение не было доставлено (получатель офлайн, в инстансе или заблокировал вас).</value>
</data>
<data name="Settings_Chat_NotifyPluginDisclosure_Name" xml:space="preserve">
<value>Предупреждение перед отправкой символов плагина</value>
</data>
<data name="Settings_Chat_NotifyPluginDisclosure_Description" xml:space="preserve">
<value>Показывает предупреждение, если отправляемое сообщение содержит символы, которые корректно отображаются только у игроков с HellionChat или похожим плагином.</value>
</data>
<data name="Settings_Chat_WorldSuffix_Name" xml:space="preserve">
<value>Суффикс мира</value>
</data>
<data name="Settings_Chat_WorldSuffix_Description" xml:space="preserve">
<value>Когда добавлять родной мир к имени отправителя в журнале чата.</value>
</data>
<data name="Settings_Chat_NameForm_Name" xml:space="preserve">
<value>Формат имени</value>
</data>
<data name="Settings_Chat_NameForm_Description" xml:space="preserve">
<value>Как отображаются имена отправителей в журнале чата. По умолчанию — полное имя.</value>
</data>
<data name="NameDisplay_WorldSuffix_Never" xml:space="preserve">
<value>Никогда</value>
</data>
<data name="NameDisplay_WorldSuffix_OtherWorldOnly" xml:space="preserve">
<value>Только другие миры</value>
</data>
<data name="NameDisplay_WorldSuffix_Always" xml:space="preserve">
<value>Всегда</value>
</data>
<data name="NameDisplay_NameForm_Full" xml:space="preserve">
<value>Полное имя</value>
</data>
<data name="NameDisplay_NameForm_FirstNameOnly" xml:space="preserve">
<value>Только имя</value>
</data>
<data name="NameDisplay_NameForm_Initials" xml:space="preserve">
<value>Инициалы</value>
</data>
<data name="Settings_General_CustomSoundVolume_Name" xml:space="preserve">
<value>Громкость пользовательского звука</value>
</data>
<data name="Settings_General_CustomSoundVolume_Description" xml:space="preserve">
<value>Громкость воспроизведения трёх встроенных пользовательских звуков уведомлений. Не влияет на 16 игровых звуков.</value>
</data>
<data name="Settings_ThemeAndLayout_WindowOpacityInactive_Name" xml:space="preserve">
<value>Прозрачность неактивного окна</value>
</data>
<data name="Settings_ThemeAndLayout_WindowOpacityInactive_Description" xml:space="preserve">
<value>Прозрачность фона главного окна чата, когда оно не активно. Ползунок выше задаёт значение для активного окна. Индивидуальная настройка в меню закрепления Dalamud имеет приоритет над обоими.</value>
</data>
<data name="Tabs_NotificationSound_Enable_Name" xml:space="preserve">
<value>Звук уведомления</value>
</data>
<data name="Tabs_NotificationSound_Description" xml:space="preserve">
<value>Воспроизводит звук при получении сообщеня на этой вкладке, пока вы смотрите другую вкладку. Учитывает глобальный переключатель звука.</value>
</data>
<data name="Tabs_NotificationSound_Option" xml:space="preserve">
<value>Звук</value>
</data>
<data name="Tabs_NotificationSound_Preview" xml:space="preserve">
<value>Предварительный просмотр выбранного звука</value>
</data>
<data name="Tabs_NotificationSound_CustomOption" xml:space="preserve">
<value>Звук Hellion</value>
</data>
<data name="FailedTell_Notification_Generic" xml:space="preserve">
<value>Сообщение не было доставлено.</value>
</data>
<data name="FailedTell_Notification_Named" xml:space="preserve">
<value>Сообщение для {0} не было доставлено.</value>
</data>
<data name="ChatInput_PluginDisclosure_Warning" xml:space="preserve">
<value>Это сообщение содержит символы плагина, которые другие игроки могут видеть как пустые квадраты. Нажмите Enter ещё раз, чтобы всё равно отправить.</value>
</data>
</root>
+195 -103
View File
@@ -12,9 +12,6 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Privacy_Tab_Title" xml:space="preserve">
<value>Sekretess</value>
</data>
<data name="Privacy_FilterEnabled_Name" xml:space="preserve">
<value>Aktivera sekretessfilter</value>
</data>
@@ -24,9 +21,6 @@
<data name="Privacy_FilterEnabled_StorageOnly_Help" xml:space="preserve">
<value>Filtret styr bara vad som skrivs till den lokala databasen. I chattloggen ser du fortfarande varje meddelande live. Exkluderade kanaler sparas helt enkelt inte längre. Om du även vill ta bort kanaler från den synliga visningen använder du de vanliga chattfliksfiltren i spelet.</value>
</data>
<data name="Privacy_Filter_Tree_Heading" xml:space="preserve">
<value>Sekretessfilter och vitlista</value>
</data>
<data name="Privacy_Whitelist_Help" xml:space="preserve">
<value>Välj vilka kanaler som sparas i den lokala databasen. Standardinställningen följer dataminimering: bara dina egna konversationer. Använd knapparna nedan för att tillämpa en förinställning.</value>
</data>
@@ -597,18 +591,6 @@
</data>
<!-- Hellion Chat — General tab section headings -->
<data name="Settings_General_Input_Heading" xml:space="preserve">
<value>Inmatning</value>
</data>
<data name="Settings_General_Audio_Heading" xml:space="preserve">
<value>Ljud &amp; aviseringar</value>
</data>
<data name="Settings_General_Performance_Heading" xml:space="preserve">
<value>Prestanda</value>
</data>
<data name="Settings_General_Language_Heading" xml:space="preserve">
<value>Språk &amp; inmatningshjälp</value>
</data>
<!-- Hellion Chat — Appearance tab section headings -->
<data name="Settings_Appearance_Theme_Heading" xml:space="preserve">
@@ -625,32 +607,11 @@
</data>
<!-- Hellion Chat — Window tab section headings -->
<data name="Settings_Window_Hide_Heading" xml:space="preserve">
<value>Dölj</value>
</data>
<data name="Settings_Window_InactivityHide_Heading" xml:space="preserve">
<value>Dölj vid inaktivitet</value>
</data>
<data name="Settings_Window_Frame_Heading" xml:space="preserve">
<value>Fönsterram</value>
</data>
<data name="Settings_Window_Tooltips_Heading" xml:space="preserve">
<value>Verktygstips</value>
</data>
<!-- Hellion Chat — Chat tab section headings -->
<data name="Settings_Chat_AutoTellTabs_Heading" xml:space="preserve">
<value>Auto-Tell-Tabs</value>
</data>
<data name="Settings_Chat_Behaviour_Heading" xml:space="preserve">
<value>Meddelandebeteende</value>
</data>
<data name="Settings_Chat_Preview_Heading" xml:space="preserve">
<value>Förhandsgranskning</value>
</data>
<data name="Settings_Chat_Emotes_Heading" xml:space="preserve">
<value>Emotes</value>
</data>
<!-- Hellion Chat — Chat tab SymbolPicker -->
<data name="Settings_Chat_SymbolPicker_Enable_Name" xml:space="preserve">
@@ -672,15 +633,6 @@
</data>
<!-- Hellion Chat — Information tab section headings -->
<data name="Settings_Information_VersionInfo_Heading" xml:space="preserve">
<value>Versionsinformation</value>
</data>
<data name="Settings_Information_About_Heading" xml:space="preserve">
<value>Om HellionChat</value>
</data>
<data name="Settings_Information_Changelog_Heading" xml:space="preserve">
<value>Changelog</value>
</data>
<!-- Hellion Chat — Default tab presets (channel-specific) -->
<data name="Tabs_Presets_System" xml:space="preserve">
@@ -811,12 +763,6 @@
<data name="Settings_Card_Tabs_Subtext" xml:space="preserve">
<value>Skapa och konfigurera anpassade chattflikar.</value>
</data>
<data name="Settings_Card_Privacy_Title" xml:space="preserve">
<value>Sekretess</value>
</data>
<data name="Settings_Card_Privacy_Subtext" xml:space="preserve">
<value>Sekretessfilter per kanal och vad som får sparas.</value>
</data>
<data name="Settings_Card_Database_Title" xml:space="preserve">
<value>Databas</value>
</data>
@@ -824,10 +770,10 @@
<value>Lagring, migrering, äldre rensning</value>
</data>
<data name="Settings_Card_Information_Title" xml:space="preserve">
<value>Information</value>
<value>Om</value>
</data>
<data name="Settings_Card_Information_Subtext" xml:space="preserve">
<value>Version, syfte, licens och changelog.</value>
<value>Tillägg, version, projektinformation, översättare och changelog.</value>
</data>
<data name="Settings_Tab_Themes" xml:space="preserve">
<value>Themes</value>
@@ -868,29 +814,11 @@
<data name="Appearance_UseCompactDensity_Description" xml:space="preserve">
<value>Byter meddelandelayouten från kortradstandarden tillbaka till enkla `[HH:mm] Avsändare: Text`-rader.</value>
</data>
<data name="Settings_Card_ThemeAndLayout_Title" xml:space="preserve">
<value>Theme &amp; Layout</value>
</data>
<data name="Settings_Card_ThemeAndLayout_Subtext" xml:space="preserve">
<value>Theme, fönsterram och tidsstämpelinställning.</value>
</data>
<data name="Settings_Card_FontsAndColours_Title" xml:space="preserve">
<value>Teckensnitt &amp; Färger</value>
</data>
<data name="Settings_Card_FontsAndColours_Subtext" xml:space="preserve">
<value>Teckensnitt, teckenstorlek och chattfärger per kanal.</value>
</data>
<data name="Settings_Card_DataManagement_Title" xml:space="preserve">
<value>Datahantering</value>
<value>Data och sekretess</value>
</data>
<data name="Settings_Card_DataManagement_Subtext" xml:space="preserve">
<value>Lagring, rensning, export och databasstatistik.</value>
</data>
<data name="Settings_Card_Integrations_Title" xml:space="preserve">
<value>Integrationer</value>
</data>
<data name="Settings_Card_Integrations_Subtext" xml:space="preserve">
<value>Andra Dalamud-plugins som HellionChat samarbetar med. Kommande integrationer i förhandsgranskning.</value>
<value>Sekretessfilter, lagring, rensning, export och databasstatistik.</value>
</data>
<data name="Settings_ThemeAndLayout_Theme_Heading" xml:space="preserve">
<value>Theme</value>
@@ -907,39 +835,12 @@
<data name="Settings_ThemeAndLayout_WindowOpacity_Description" xml:space="preserve">
<value>Hur genomskinlig fönsterbakgrunden är. Lägre värden låter mer av spelet synas igenom. Tips: Dalamud's per-fönster-meny (hamburgaren i namnlisten) erbjuder per-fönster-överstyrningar för opacitet, bakgrundsoskärpa, klickigenom och fästning: de har företräde framför det här reglaget för respektive fönster.</value>
</data>
<data name="Settings_FontsAndColours_Fonts_Heading" xml:space="preserve">
<value>Teckensnitt</value>
</data>
<data name="Settings_FontsAndColours_Colours_Heading" xml:space="preserve">
<value>Chattfärger</value>
</data>
<data name="Settings_DataManagement_Storage_Heading" xml:space="preserve">
<value>Lagring</value>
</data>
<data name="Settings_DataManagement_Retention_Heading" xml:space="preserve">
<value>Lagring</value>
</data>
<data name="Settings_DataManagement_Cleanup_Heading" xml:space="preserve">
<value>Rensning</value>
</data>
<data name="Settings_DataManagement_Export_Heading" xml:space="preserve">
<value>Export</value>
</data>
<data name="Settings_DataManagement_DbViewer_Heading" xml:space="preserve">
<value>Databasvisare</value>
</data>
<data name="Settings_DataManagement_Advanced_Heading" xml:space="preserve">
<value>Avancerat (Shift+klicka för att öppna)</value>
</data>
<data name="Settings_Window_Frame_Behaviour_Heading" xml:space="preserve">
<value>Beteende</value>
</data>
<data name="Migration_v16_OverrideStyle_Toast" xml:space="preserve">
<value>Hellion Chat 1.2.1 har omorganiserat inställningsmenyn och tagit bort det gamla alternativet "Åsidosätt stil" (ersatt av theme-systemet från 1.1.0). Dina övriga inställningar är oförändrade. Fönstrets genomskinlighet har migrerats till "Theme &amp; Layout". En säkerhetskopia av den tidigare konfigurationen finns vid pluginConfigs/HellionChat.json.pre-v16-backup bredvid den aktiva HellionChat.json.</value>
</data>
<data name="Settings_Tab_Integrations" xml:space="preserve">
<value>Integrationer</value>
</data>
<data name="Settings_Integrations_Intro" xml:space="preserve">
<value>Plugin-integrationer låter HellionChat samarbeta med andra installerade Dalamud-plugins. Varje integration identifierar automatiskt sitt mål och inaktiverar sig tyst när målpluginen saknas.</value>
</data>
@@ -1054,4 +955,195 @@
<value>Inaktiverar temaövergången, hover-animationerna för sidofältet och korten samt pulseringen av olästa flikar. Temabyten och hover-tillstånd tillämpas i stället direkt.</value>
<comment>AI-assisted machine translation. Pending native-speaker review.</comment>
</data>
<!-- Hellion Chat — Settings Overhaul section titles (v1.5.6) -->
<data name="Settings_Section_Input" xml:space="preserve">
<value>Inmatning</value>
</data>
<data name="Settings_Section_Sound" xml:space="preserve">
<value>Ljud</value>
</data>
<data name="Settings_Section_Language" xml:space="preserve">
<value>Språk</value>
</data>
<data name="Settings_Section_Performance" xml:space="preserve">
<value>Prestanda</value>
</data>
<data name="Settings_Section_Sound_TabsHint" xml:space="preserve">
<value>Vilket ljud som spelas per flik ställs in på fliken Kanaler.</value>
</data>
<data name="Settings_Section_Theme" xml:space="preserve">
<value>Tema</value>
</data>
<data name="Settings_Section_Fonts" xml:space="preserve">
<value>Teckensnitt</value>
</data>
<data name="Settings_Section_Colours" xml:space="preserve">
<value>Färger</value>
</data>
<data name="Settings_Section_WindowStyle" xml:space="preserve">
<value>Fönsterstil</value>
</data>
<data name="Settings_Section_Timestamps" xml:space="preserve">
<value>Tidsstämplar</value>
</data>
<data name="Settings_Section_Animations" xml:space="preserve">
<value>Animeringar</value>
</data>
<data name="Settings_Section_Messages" xml:space="preserve">
<value>Meddelanden</value>
</data>
<data name="Settings_Section_InputPreview" xml:space="preserve">
<value>Inmatning och förhandsgranskning</value>
</data>
<data name="Settings_Section_AutoTellTabs" xml:space="preserve">
<value>Automatiska tell-flikar</value>
</data>
<data name="Settings_Section_Emotes" xml:space="preserve">
<value>Emotes</value>
</data>
<data name="Settings_Section_LinksTooltips" xml:space="preserve">
<value>Länkar och verktygstips</value>
</data>
<data name="Settings_Section_NoviceNetwork" xml:space="preserve">
<value>Nybörjarnätverket</value>
</data>
<data name="Settings_Section_Hide" xml:space="preserve">
<value>Dölj</value>
</data>
<data name="Settings_Section_InactivityHide" xml:space="preserve">
<value>Dölj vid inaktivitet</value>
</data>
<data name="Settings_Section_Frame" xml:space="preserve">
<value>Ram</value>
</data>
<data name="Settings_Section_Tab_Channels" xml:space="preserve">
<value>Kanaler</value>
</data>
<data name="Settings_Section_Tab_Display" xml:space="preserve">
<value>Visning</value>
</data>
<data name="Settings_Section_Tab_Notification" xml:space="preserve">
<value>Avisering</value>
</data>
<data name="Settings_Section_Tab_Input" xml:space="preserve">
<value>Inmatning</value>
</data>
<data name="Settings_Section_Tab_PopOut" xml:space="preserve">
<value>Utbrytningsfönster</value>
</data>
<data name="Settings_Section_Tab_Volume_AllTabsHint" xml:space="preserve">
<value>Volymen gäller för alla flikar.</value>
</data>
<data name="Settings_Section_PrivacyFilter" xml:space="preserve">
<value>Integritetsfilter</value>
</data>
<data name="Settings_Section_Storage" xml:space="preserve">
<value>Lagring</value>
</data>
<data name="Settings_Section_Retention" xml:space="preserve">
<value>Lagring</value>
</data>
<data name="Settings_Section_Cleanup" xml:space="preserve">
<value>Rensning</value>
</data>
<data name="Settings_Section_Export" xml:space="preserve">
<value>Exportera</value>
</data>
<data name="Settings_Section_Database" xml:space="preserve">
<value>Databas</value>
</data>
<data name="Settings_Section_Extensions" xml:space="preserve">
<value>Tillägg</value>
</data>
<data name="Settings_Section_PluginInfo" xml:space="preserve">
<value>Plugin-info</value>
</data>
<data name="Settings_Section_Project" xml:space="preserve">
<value>Projektet</value>
</data>
<data name="Settings_Section_Translators" xml:space="preserve">
<value>Översättare</value>
</data>
<data name="Settings_Section_Changelog" xml:space="preserve">
<value>Ändringslogg</value>
</data>
<data name="Settings_Chat_NotifyFailedTell_Name" xml:space="preserve">
<value>Avisera om misslyckat tell</value>
</data>
<data name="Settings_Chat_NotifyFailedTell_Description" xml:space="preserve">
<value>Visar ett toast-meddelande när ett tell du skickade inte kunde levereras (mottagaren är offline, i en instans eller blockerar dig).</value>
</data>
<data name="Settings_Chat_NotifyPluginDisclosure_Name" xml:space="preserve">
<value>Varna innan sändning av plugin-exklusiva symboler</value>
</data>
<data name="Settings_Chat_NotifyPluginDisclosure_Description" xml:space="preserve">
<value>Visar en varning när ett meddelande du är på väg att skicka innehåller symboler som endast visas korrekt för spelare som kör HellionChat eller ett liknande plugin.</value>
</data>
<data name="Settings_Chat_WorldSuffix_Name" xml:space="preserve">
<value>Världssuffix</value>
</data>
<data name="Settings_Chat_WorldSuffix_Description" xml:space="preserve">
<value>När hemvärldensnamnet läggs till avsändarens namn i chatt-loggen.</value>
</data>
<data name="Settings_Chat_NameForm_Name" xml:space="preserve">
<value>Namnformat</value>
</data>
<data name="Settings_Chat_NameForm_Description" xml:space="preserve">
<value>Hur avsändarnamn visas i chatt-loggen. Fullständigt namn är standard.</value>
</data>
<data name="NameDisplay_WorldSuffix_Never" xml:space="preserve">
<value>Aldrig</value>
</data>
<data name="NameDisplay_WorldSuffix_OtherWorldOnly" xml:space="preserve">
<value>Bara andra världar</value>
</data>
<data name="NameDisplay_WorldSuffix_Always" xml:space="preserve">
<value>Alltid</value>
</data>
<data name="NameDisplay_NameForm_Full" xml:space="preserve">
<value>Fullständigt namn</value>
</data>
<data name="NameDisplay_NameForm_FirstNameOnly" xml:space="preserve">
<value>Endast förnamn</value>
</data>
<data name="NameDisplay_NameForm_Initials" xml:space="preserve">
<value>Initialer</value>
</data>
<data name="Settings_General_CustomSoundVolume_Name" xml:space="preserve">
<value>Anpassad ljudstyrka</value>
</data>
<data name="Settings_General_CustomSoundVolume_Description" xml:space="preserve">
<value>Uppspelningsstyrka för de tre medföljande anpassade aviseringsljuden. Påverkar inte de 16 spelljuden.</value>
</data>
<data name="Settings_ThemeAndLayout_WindowOpacityInactive_Name" xml:space="preserve">
<value>Inaktivt fönsters opacitet</value>
</data>
<data name="Settings_ThemeAndLayout_WindowOpacityInactive_Description" xml:space="preserve">
<value>Bakgrundsopacitet för det primära chattfönstret när det inte är i fokus. Skjutreglaget ovan anger det fokuserade värdet. En fönsterspecifik åsidosättning i Dalamud-fästningsmenyn har företräde framför båda.</value>
</data>
<data name="Tabs_NotificationSound_Enable_Name" xml:space="preserve">
<value>Aviseringsljud</value>
</data>
<data name="Tabs_NotificationSound_Description" xml:space="preserve">
<value>Spelar ett ljud när ett meddelande anländer på den här fliken medan du tittar på en annan flik. Respekterar det globala ljudbytaren.</value>
</data>
<data name="Tabs_NotificationSound_Option" xml:space="preserve">
<value>Ljud</value>
</data>
<data name="Tabs_NotificationSound_Preview" xml:space="preserve">
<value>Förhandsgranska valt ljud</value>
</data>
<data name="Tabs_NotificationSound_CustomOption" xml:space="preserve">
<value>Hellion-ljud</value>
</data>
<data name="FailedTell_Notification_Generic" xml:space="preserve">
<value>Ett tell kunde inte levereras.</value>
</data>
<data name="FailedTell_Notification_Named" xml:space="preserve">
<value>Tell till {0} kunde inte levereras.</value>
</data>
<data name="ChatInput_PluginDisclosure_Warning" xml:space="preserve">
<value>Det här meddelandet innehåller plugin-exklusiva symboler som andra spelare kanske ser som tomma rutor. Tryck Enter igen för att skicka ändå.</value>
</data>
</root>
+195 -103
View File
@@ -12,9 +12,6 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Privacy_Tab_Title" xml:space="preserve">
<value>Gizlilik</value>
</data>
<data name="Privacy_FilterEnabled_Name" xml:space="preserve">
<value>Gizlilik filtresini etkinleştir</value>
</data>
@@ -24,9 +21,6 @@
<data name="Privacy_FilterEnabled_StorageOnly_Help" xml:space="preserve">
<value>Filtre yalnızca yerel veritabanına nelerin yazılacağını denetler. Sohbet logu her mesajı canlı göstermeye devam eder; dışlanan kanallar artık saklanmaz. Kanalları görünür ekrandan da kaldırmak istiyorsan oyun içindeki normal sohbet sekme filtrelerini kullan.</value>
</data>
<data name="Privacy_Filter_Tree_Heading" xml:space="preserve">
<value>Gizlilik filtresi ve beyaz liste</value>
</data>
<data name="Privacy_Whitelist_Help" xml:space="preserve">
<value>Yerel veritabanına hangi kanalların kaydedileceğini seç. Varsayılan veri minimizasyonunu takip eder: yalnızca kendi konuşmaların. Bir ön ayar uygulamak için aşağıdaki düğmeleri kullan.</value>
</data>
@@ -597,18 +591,6 @@
</data>
<!-- Hellion Chat — General tab section headings -->
<data name="Settings_General_Input_Heading" xml:space="preserve">
<value>Giriş</value>
</data>
<data name="Settings_General_Audio_Heading" xml:space="preserve">
<value>Ses &amp; bildirimler</value>
</data>
<data name="Settings_General_Performance_Heading" xml:space="preserve">
<value>Performans</value>
</data>
<data name="Settings_General_Language_Heading" xml:space="preserve">
<value>Dil &amp; giriş yardımcıları</value>
</data>
<!-- Hellion Chat — Appearance tab section headings -->
<data name="Settings_Appearance_Theme_Heading" xml:space="preserve">
@@ -625,32 +607,11 @@
</data>
<!-- Hellion Chat — Window tab section headings -->
<data name="Settings_Window_Hide_Heading" xml:space="preserve">
<value>Gizleme</value>
</data>
<data name="Settings_Window_InactivityHide_Heading" xml:space="preserve">
<value>Etkin olmadığında gizle</value>
</data>
<data name="Settings_Window_Frame_Heading" xml:space="preserve">
<value>Pencere çerçevesi</value>
</data>
<data name="Settings_Window_Tooltips_Heading" xml:space="preserve">
<value>İpuçları</value>
</data>
<!-- Hellion Chat — Chat tab section headings -->
<data name="Settings_Chat_AutoTellTabs_Heading" xml:space="preserve">
<value>Auto-Tell-Tabs</value>
</data>
<data name="Settings_Chat_Behaviour_Heading" xml:space="preserve">
<value>Mesaj davranışı</value>
</data>
<data name="Settings_Chat_Preview_Heading" xml:space="preserve">
<value>Önizleme</value>
</data>
<data name="Settings_Chat_Emotes_Heading" xml:space="preserve">
<value>Emote'lar</value>
</data>
<!-- Hellion Chat — Chat tab SymbolPicker -->
<data name="Settings_Chat_SymbolPicker_Enable_Name" xml:space="preserve">
@@ -672,15 +633,6 @@
</data>
<!-- Hellion Chat — Information tab section headings -->
<data name="Settings_Information_VersionInfo_Heading" xml:space="preserve">
<value>Sürüm bilgisi</value>
</data>
<data name="Settings_Information_About_Heading" xml:space="preserve">
<value>HellionChat hakkında</value>
</data>
<data name="Settings_Information_Changelog_Heading" xml:space="preserve">
<value>Changelog</value>
</data>
<!-- Hellion Chat — Default tab presets (channel-specific) -->
<data name="Tabs_Presets_System" xml:space="preserve">
@@ -811,12 +763,6 @@
<data name="Settings_Card_Tabs_Subtext" xml:space="preserve">
<value>Özel sohbet sekmeleri oluştur ve yapılandır.</value>
</data>
<data name="Settings_Card_Privacy_Title" xml:space="preserve">
<value>Gizlilik</value>
</data>
<data name="Settings_Card_Privacy_Subtext" xml:space="preserve">
<value>Kanal başına gizlilik filtresi ve nelerin saklanabileceği.</value>
</data>
<data name="Settings_Card_Database_Title" xml:space="preserve">
<value>Veritabanı</value>
</data>
@@ -824,10 +770,10 @@
<value>Depolama, geçiş, eski temizlik</value>
</data>
<data name="Settings_Card_Information_Title" xml:space="preserve">
<value>Bilgi</value>
<value>Hakkında</value>
</data>
<data name="Settings_Card_Information_Subtext" xml:space="preserve">
<value>Sürüm, misyon, lisans ve changelog.</value>
<value>Eklentiler, sürüm, proje bilgileri, çevirmenler ve changelog.</value>
</data>
<data name="Settings_Tab_Themes" xml:space="preserve">
<value>Themes</value>
@@ -868,29 +814,11 @@
<data name="Appearance_UseCompactDensity_Description" xml:space="preserve">
<value>Mesaj düzenini kart satırı varsayılanından tek satırlı `[HH:mm] Gönderen: Metin` satırlarına geri döndürür.</value>
</data>
<data name="Settings_Card_ThemeAndLayout_Title" xml:space="preserve">
<value>Theme &amp; Layout</value>
</data>
<data name="Settings_Card_ThemeAndLayout_Subtext" xml:space="preserve">
<value>Tema, pencere çerçevesi ve zaman damgası stili.</value>
</data>
<data name="Settings_Card_FontsAndColours_Title" xml:space="preserve">
<value>Fonts &amp; Colours</value>
</data>
<data name="Settings_Card_FontsAndColours_Subtext" xml:space="preserve">
<value>Yazı tipi, yazı tipi boyutu ve kanal başına sohbet renkleri.</value>
</data>
<data name="Settings_Card_DataManagement_Title" xml:space="preserve">
<value>Veri yönetimi</value>
<value>Veri ve gizlilik</value>
</data>
<data name="Settings_Card_DataManagement_Subtext" xml:space="preserve">
<value>Saklama süresi, temizlik, dışa aktarma ve veritabanı istatistikleri.</value>
</data>
<data name="Settings_Card_Integrations_Title" xml:space="preserve">
<value>Entegrasyonlar</value>
</data>
<data name="Settings_Card_Integrations_Subtext" xml:space="preserve">
<value>HellionChat'in birlikte çalıştığı diğer Dalamud eklentileri. Önizlemedeki yaklaşan entegrasyonlar.</value>
<value>Gizlilik filtresi, saklama süresi, temizlik, dışa aktarma ve veritabanı istatistikleri.</value>
</data>
<data name="Settings_ThemeAndLayout_Theme_Heading" xml:space="preserve">
<value>Theme</value>
@@ -907,39 +835,12 @@
<data name="Settings_ThemeAndLayout_WindowOpacity_Description" xml:space="preserve">
<value>Pencere arka planının ne kadar şeffaf olduğu. Düşük değerler oyunun daha fazla görünmesini sağlar. İpucu: Dalamud'un pencere başına menüsü (başlık çubuğundaki hamburger menü), opaklık, arka plan bulanıklığı, tıkla ve geç ile sabitleme için pencere başına geçersiz kılmalar sunar; bunlar ilgili pencere için bu kaydırıcının önüne geçer.</value>
</data>
<data name="Settings_FontsAndColours_Fonts_Heading" xml:space="preserve">
<value>Yazı tipleri</value>
</data>
<data name="Settings_FontsAndColours_Colours_Heading" xml:space="preserve">
<value>Sohbet renkleri</value>
</data>
<data name="Settings_DataManagement_Storage_Heading" xml:space="preserve">
<value>Depolama</value>
</data>
<data name="Settings_DataManagement_Retention_Heading" xml:space="preserve">
<value>Saklama süresi</value>
</data>
<data name="Settings_DataManagement_Cleanup_Heading" xml:space="preserve">
<value>Temizlik</value>
</data>
<data name="Settings_DataManagement_Export_Heading" xml:space="preserve">
<value>Dışa aktarma</value>
</data>
<data name="Settings_DataManagement_DbViewer_Heading" xml:space="preserve">
<value>Veritabanı görüntüleyici</value>
</data>
<data name="Settings_DataManagement_Advanced_Heading" xml:space="preserve">
<value>Gelişmiş (açmak için Shift+tıkla)</value>
</data>
<data name="Settings_Window_Frame_Behaviour_Heading" xml:space="preserve">
<value>Davranış</value>
</data>
<data name="Migration_v16_OverrideStyle_Toast" xml:space="preserve">
<value>Hellion Chat 1.2.1, ayarlar menüsünü yeniden düzenledi ve eski "Stili geçersiz kıl" seçeneğini kaldırdı (1.1.0'daki tema sistemi tarafından yerini aldı). Kalan ayarların değişmedi. Pencere şeffaflığı "Theme &amp; Layout" bölümüne taşındı. Önceki yapılandırmanın yedeği, aktif HellionChat.json dosyasının yanında pluginConfigs/HellionChat.json.pre-v16-backup olarak bulunmaktadır.</value>
</data>
<data name="Settings_Tab_Integrations" xml:space="preserve">
<value>Entegrasyonlar</value>
</data>
<data name="Settings_Integrations_Intro" xml:space="preserve">
<value>Eklenti entegrasyonları, HellionChat'in yüklü diğer Dalamud eklentileriyle birlikte çalışmasını sağlar. Her entegrasyon hedefini otomatik olarak algılar ve hedef eklenti eksik olduğunda sessizce devre dışı kalır.</value>
</data>
@@ -1053,4 +954,195 @@
<value>Tema geçişini, kenar çubuğu ve kart vurgulama animasyonlarını ve okunmamış sekme nabzını devre dışı bırakır. Tema değişiklikleri ve vurgulama durumları bunun yerine anında uygulanır.</value>
<comment>AI-assisted machine translation. Pending native-speaker review.</comment>
</data>
<!-- Hellion Chat — Settings Overhaul section titles (v1.5.6) -->
<data name="Settings_Section_Input" xml:space="preserve">
<value>Giriş</value>
</data>
<data name="Settings_Section_Sound" xml:space="preserve">
<value>Ses</value>
</data>
<data name="Settings_Section_Language" xml:space="preserve">
<value>Dil</value>
</data>
<data name="Settings_Section_Performance" xml:space="preserve">
<value>Performans</value>
</data>
<data name="Settings_Section_Sound_TabsHint" xml:space="preserve">
<value>Her sekme için hangi sesin çalınacağı Kanallar sekmesinden ayarlanır.</value>
</data>
<data name="Settings_Section_Theme" xml:space="preserve">
<value>Tema</value>
</data>
<data name="Settings_Section_Fonts" xml:space="preserve">
<value>Yazı Tipleri</value>
</data>
<data name="Settings_Section_Colours" xml:space="preserve">
<value>Renkler</value>
</data>
<data name="Settings_Section_WindowStyle" xml:space="preserve">
<value>Pencere stili</value>
</data>
<data name="Settings_Section_Timestamps" xml:space="preserve">
<value>Zaman damgaları</value>
</data>
<data name="Settings_Section_Animations" xml:space="preserve">
<value>Animasyonlar</value>
</data>
<data name="Settings_Section_Messages" xml:space="preserve">
<value>Mesajlar</value>
</data>
<data name="Settings_Section_InputPreview" xml:space="preserve">
<value>Giriş ve önizleme</value>
</data>
<data name="Settings_Section_AutoTellTabs" xml:space="preserve">
<value>Otomatik tell sekmeleri</value>
</data>
<data name="Settings_Section_Emotes" xml:space="preserve">
<value>Emote'lar</value>
</data>
<data name="Settings_Section_LinksTooltips" xml:space="preserve">
<value>Bağlantılar ve araç ipuçları</value>
</data>
<data name="Settings_Section_NoviceNetwork" xml:space="preserve">
<value>Acemi ağı</value>
</data>
<data name="Settings_Section_Hide" xml:space="preserve">
<value>Gizle</value>
</data>
<data name="Settings_Section_InactivityHide" xml:space="preserve">
<value>Etkin değilken gizle</value>
</data>
<data name="Settings_Section_Frame" xml:space="preserve">
<value>Çerçeve</value>
</data>
<data name="Settings_Section_Tab_Channels" xml:space="preserve">
<value>Kanallar</value>
</data>
<data name="Settings_Section_Tab_Display" xml:space="preserve">
<value>Görüntüleme</value>
</data>
<data name="Settings_Section_Tab_Notification" xml:space="preserve">
<value>Bildirim</value>
</data>
<data name="Settings_Section_Tab_Input" xml:space="preserve">
<value>Giriş</value>
</data>
<data name="Settings_Section_Tab_PopOut" xml:space="preserve">
<value>Ayrılan pencere</value>
</data>
<data name="Settings_Section_Tab_Volume_AllTabsHint" xml:space="preserve">
<value>Bu ses düzeyi tüm sekmelere uygulanır.</value>
</data>
<data name="Settings_Section_PrivacyFilter" xml:space="preserve">
<value>Gizlilik filtresi</value>
</data>
<data name="Settings_Section_Storage" xml:space="preserve">
<value>Depolama</value>
</data>
<data name="Settings_Section_Retention" xml:space="preserve">
<value>Saklama</value>
</data>
<data name="Settings_Section_Cleanup" xml:space="preserve">
<value>Temizlik</value>
</data>
<data name="Settings_Section_Export" xml:space="preserve">
<value>Dışa aktar</value>
</data>
<data name="Settings_Section_Database" xml:space="preserve">
<value>Veritabanı</value>
</data>
<data name="Settings_Section_Extensions" xml:space="preserve">
<value>Uzantılar</value>
</data>
<data name="Settings_Section_PluginInfo" xml:space="preserve">
<value>Plugin bilgisi</value>
</data>
<data name="Settings_Section_Project" xml:space="preserve">
<value>Proje</value>
</data>
<data name="Settings_Section_Translators" xml:space="preserve">
<value>Çevirmenler</value>
</data>
<data name="Settings_Section_Changelog" xml:space="preserve">
<value>Değişiklik günlüğü</value>
</data>
<data name="Settings_Chat_NotifyFailedTell_Name" xml:space="preserve">
<value>Başarısız tell bildirimi</value>
</data>
<data name="Settings_Chat_NotifyFailedTell_Description" xml:space="preserve">
<value>Gönderdiğiniz bir tell teslim edilemediğinde bildirim gösterir (alıcı çevrimdışı, örnekte veya sizi engelliyor).</value>
</data>
<data name="Settings_Chat_NotifyPluginDisclosure_Name" xml:space="preserve">
<value>Yalnızca plugin sembolleri göndermeden önce uyar</value>
</data>
<data name="Settings_Chat_NotifyPluginDisclosure_Description" xml:space="preserve">
<value>Göndermek üzere olduğunuz mesaj yalnızca HellionChat veya benzeri bir plugin kullanan oyunculara doğru görüntülenen semboller içerdiğinde uyarı gösterir.</value>
</data>
<data name="Settings_Chat_WorldSuffix_Name" xml:space="preserve">
<value>Dünya eki</value>
</data>
<data name="Settings_Chat_WorldSuffix_Description" xml:space="preserve">
<value>Sohbet günlüğünde gönderenin adına ana dünya adının ne zaman ekleneceği.</value>
</data>
<data name="Settings_Chat_NameForm_Name" xml:space="preserve">
<value>Ad biçimi</value>
</data>
<data name="Settings_Chat_NameForm_Description" xml:space="preserve">
<value>Gönderen adlarının sohbet günlüğünde nasıl gösterileceği. Tam ad varsayılandır.</value>
</data>
<data name="NameDisplay_WorldSuffix_Never" xml:space="preserve">
<value>Asla</value>
</data>
<data name="NameDisplay_WorldSuffix_OtherWorldOnly" xml:space="preserve">
<value>Yalnızca diğer dünyalar</value>
</data>
<data name="NameDisplay_WorldSuffix_Always" xml:space="preserve">
<value>Her zaman</value>
</data>
<data name="NameDisplay_NameForm_Full" xml:space="preserve">
<value>Tam ad</value>
</data>
<data name="NameDisplay_NameForm_FirstNameOnly" xml:space="preserve">
<value>Yalnızca ad</value>
</data>
<data name="NameDisplay_NameForm_Initials" xml:space="preserve">
<value>Baş harfler</value>
</data>
<data name="Settings_General_CustomSoundVolume_Name" xml:space="preserve">
<value>Özel ses düzeyi</value>
</data>
<data name="Settings_General_CustomSoundVolume_Description" xml:space="preserve">
<value>Üç yerleşik özel bildirim sesinin oynatma ses düzeyi. 16 oyun sesini etkilemez.</value>
</data>
<data name="Settings_ThemeAndLayout_WindowOpacityInactive_Name" xml:space="preserve">
<value>Etkin olmayan pencere opaklığı</value>
</data>
<data name="Settings_ThemeAndLayout_WindowOpacityInactive_Description" xml:space="preserve">
<value>Ana sohbet penceresinin odaklanılmadığı durumlardaki arka plan opaklığı. Üstteki kaydırıcı odaklanılmış değeri belirler. Dalamud sabitleme menüsündeki pencere başına geçersiz kılma her ikisine de öncelik tanır.</value>
</data>
<data name="Tabs_NotificationSound_Enable_Name" xml:space="preserve">
<value>Bildirim sesi</value>
</data>
<data name="Tabs_NotificationSound_Description" xml:space="preserve">
<value>Başka bir sekmeye bakarken bu sekmeye mesaj geldiğinde ses çalar. Genel ses düğmesine uyar.</value>
</data>
<data name="Tabs_NotificationSound_Option" xml:space="preserve">
<value>Ses</value>
</data>
<data name="Tabs_NotificationSound_Preview" xml:space="preserve">
<value>Seçili sesi önizle</value>
</data>
<data name="Tabs_NotificationSound_CustomOption" xml:space="preserve">
<value>Hellion sesi</value>
</data>
<data name="FailedTell_Notification_Generic" xml:space="preserve">
<value>Bir tell teslim edilemedi.</value>
</data>
<data name="FailedTell_Notification_Named" xml:space="preserve">
<value>{0} kişisine tell teslim edilemedi.</value>
</data>
<data name="ChatInput_PluginDisclosure_Warning" xml:space="preserve">
<value>Bu mesaj, diğer oyuncuların boş kutu olarak görebileceği yalnızca plugin semboller içeriyor. Yine de göndermek için Enter'a tekrar basın.</value>
</data>
</root>
+195 -103
View File
@@ -12,9 +12,6 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Privacy_Tab_Title" xml:space="preserve">
<value>Конфіденційність</value>
</data>
<data name="Privacy_FilterEnabled_Name" xml:space="preserve">
<value>Увімкнути фільтр конфіденційності</value>
</data>
@@ -24,9 +21,6 @@
<data name="Privacy_FilterEnabled_StorageOnly_Help" xml:space="preserve">
<value>Фільтр контролює лише те, що записується до локальної бази даних. У журналі чату все одно відображаються всі повідомлення в реальному часі; виключені канали просто більше не зберігаються. Якщо Ви також хочете прибрати канали з видимого відображення, скористайтесь звичайними фільтрами вкладок чату в грі.</value>
</data>
<data name="Privacy_Filter_Tree_Heading" xml:space="preserve">
<value>Фільтр конфіденційності та білий список</value>
</data>
<data name="Privacy_Whitelist_Help" xml:space="preserve">
<value>Виберіть, які канали зберігаються до локальної бази даних. За замовчуванням застосовується мінімізація даних: лише Ваші власні розмови. Скористайтесь кнопками нижче, щоб застосувати шаблон.</value>
</data>
@@ -597,18 +591,6 @@
</data>
<!-- Hellion Chat — General tab section headings -->
<data name="Settings_General_Input_Heading" xml:space="preserve">
<value>Введення</value>
</data>
<data name="Settings_General_Audio_Heading" xml:space="preserve">
<value>Звук &amp; сповіщення</value>
</data>
<data name="Settings_General_Performance_Heading" xml:space="preserve">
<value>Продуктивність</value>
</data>
<data name="Settings_General_Language_Heading" xml:space="preserve">
<value>Мова &amp; допоміжні засоби введення</value>
</data>
<!-- Hellion Chat — Appearance tab section headings -->
<data name="Settings_Appearance_Theme_Heading" xml:space="preserve">
@@ -625,32 +607,11 @@
</data>
<!-- Hellion Chat — Window tab section headings -->
<data name="Settings_Window_Hide_Heading" xml:space="preserve">
<value>Приховування</value>
</data>
<data name="Settings_Window_InactivityHide_Heading" xml:space="preserve">
<value>Приховування при бездіяльності</value>
</data>
<data name="Settings_Window_Frame_Heading" xml:space="preserve">
<value>Рамка вікна</value>
</data>
<data name="Settings_Window_Tooltips_Heading" xml:space="preserve">
<value>Підказки</value>
</data>
<!-- Hellion Chat — Chat tab section headings -->
<data name="Settings_Chat_AutoTellTabs_Heading" xml:space="preserve">
<value>Auto-Tell-Tabs</value>
</data>
<data name="Settings_Chat_Behaviour_Heading" xml:space="preserve">
<value>Поведінка повідомлень</value>
</data>
<data name="Settings_Chat_Preview_Heading" xml:space="preserve">
<value>Попередній перегляд</value>
</data>
<data name="Settings_Chat_Emotes_Heading" xml:space="preserve">
<value>Емоції</value>
</data>
<!-- Hellion Chat — Chat tab SymbolPicker -->
<data name="Settings_Chat_SymbolPicker_Enable_Name" xml:space="preserve">
@@ -672,15 +633,6 @@
</data>
<!-- Hellion Chat — Information tab section headings -->
<data name="Settings_Information_VersionInfo_Heading" xml:space="preserve">
<value>Інформація про версію</value>
</data>
<data name="Settings_Information_About_Heading" xml:space="preserve">
<value>Про HellionChat</value>
</data>
<data name="Settings_Information_Changelog_Heading" xml:space="preserve">
<value>Changelog</value>
</data>
<!-- Hellion Chat — Default tab presets (channel-specific) -->
<data name="Tabs_Presets_System" xml:space="preserve">
@@ -811,12 +763,6 @@
<data name="Settings_Card_Tabs_Subtext" xml:space="preserve">
<value>Створення та налаштування власних вкладок чату.</value>
</data>
<data name="Settings_Card_Privacy_Title" xml:space="preserve">
<value>Конфіденційність</value>
</data>
<data name="Settings_Card_Privacy_Subtext" xml:space="preserve">
<value>Фільтр конфіденційності за каналами та що може зберігатись.</value>
</data>
<data name="Settings_Card_Database_Title" xml:space="preserve">
<value>База даних</value>
</data>
@@ -824,10 +770,10 @@
<value>Зберігання, міграція, видалення застарілого</value>
</data>
<data name="Settings_Card_Information_Title" xml:space="preserve">
<value>Інформація</value>
<value>Про плагін</value>
</data>
<data name="Settings_Card_Information_Subtext" xml:space="preserve">
<value>Версія, місія, ліцензія та changelog.</value>
<value>Розширення, версія, інформація про проект, перекладачі та changelog.</value>
</data>
<data name="Settings_Tab_Themes" xml:space="preserve">
<value>Теми</value>
@@ -868,29 +814,11 @@
<data name="Appearance_UseCompactDensity_Description" xml:space="preserve">
<value>Перемикає макет повідомлень зі стандартного вигляду карток назад на однорядкові рядки `[HH:mm] Відправник: Текст`.</value>
</data>
<data name="Settings_Card_ThemeAndLayout_Title" xml:space="preserve">
<value>Тема &amp; Макет</value>
</data>
<data name="Settings_Card_ThemeAndLayout_Subtext" xml:space="preserve">
<value>Тема, рамка вікна та стиль міток часу.</value>
</data>
<data name="Settings_Card_FontsAndColours_Title" xml:space="preserve">
<value>Шрифти &amp; Кольори</value>
</data>
<data name="Settings_Card_FontsAndColours_Subtext" xml:space="preserve">
<value>Шрифт, розмір шрифту та кольори чату за каналами.</value>
</data>
<data name="Settings_Card_DataManagement_Title" xml:space="preserve">
<value>Управління даними</value>
<value>Дані та конфіденційність</value>
</data>
<data name="Settings_Card_DataManagement_Subtext" xml:space="preserve">
<value>Термін зберігання, очищення, експорт та статистика бази даних.</value>
</data>
<data name="Settings_Card_Integrations_Title" xml:space="preserve">
<value>Інтеграції</value>
</data>
<data name="Settings_Card_Integrations_Subtext" xml:space="preserve">
<value>Інші плагіни Dalamud, з якими працює HellionChat. Майбутні інтеграції в режимі попереднього перегляду.</value>
<value>Фільтр конфіденційності, термін зберігання, очищення, експорт та статистика бази даних.</value>
</data>
<data name="Settings_ThemeAndLayout_Theme_Heading" xml:space="preserve">
<value>Тема</value>
@@ -907,39 +835,12 @@
<data name="Settings_ThemeAndLayout_WindowOpacity_Description" xml:space="preserve">
<value>Рівень прозорості фону вікна. Нижчі значення дозволяють грі більше просвічуватись. Порада: меню Dalamud для окремих вікон (іконка «гамбургер» у заголовку) пропонує окремі параметри для непрозорості, розмиття фону, прозорості для кліків та закріплення — вони мають пріоритет над цим повзунком для відповідного вікна.</value>
</data>
<data name="Settings_FontsAndColours_Fonts_Heading" xml:space="preserve">
<value>Шрифти</value>
</data>
<data name="Settings_FontsAndColours_Colours_Heading" xml:space="preserve">
<value>Кольори чату</value>
</data>
<data name="Settings_DataManagement_Storage_Heading" xml:space="preserve">
<value>Зберігання</value>
</data>
<data name="Settings_DataManagement_Retention_Heading" xml:space="preserve">
<value>Термін зберігання</value>
</data>
<data name="Settings_DataManagement_Cleanup_Heading" xml:space="preserve">
<value>Очищення</value>
</data>
<data name="Settings_DataManagement_Export_Heading" xml:space="preserve">
<value>Експорт</value>
</data>
<data name="Settings_DataManagement_DbViewer_Heading" xml:space="preserve">
<value>Переглядач бази даних</value>
</data>
<data name="Settings_DataManagement_Advanced_Heading" xml:space="preserve">
<value>Додаткові параметри (Shift+клік для відкриття)</value>
</data>
<data name="Settings_Window_Frame_Behaviour_Heading" xml:space="preserve">
<value>Поведінка</value>
</data>
<data name="Migration_v16_OverrideStyle_Toast" xml:space="preserve">
<value>Hellion Chat 1.2.1 реорганізував меню налаштувань і видалив стару опцію «Перевизначити стиль» (замінена системою тем із версії 1.1.0). Решта налаштувань залишилась без змін. Прозорість вікна перенесена до розділу «Тема &amp; Макет». Резервна копія попередньої конфігурації знаходиться за адресою pluginConfigs/HellionChat.json.pre-v16-backup поруч із активним HellionChat.json.</value>
</data>
<data name="Settings_Tab_Integrations" xml:space="preserve">
<value>Інтеграції</value>
</data>
<data name="Settings_Integrations_Intro" xml:space="preserve">
<value>Інтеграції плагінів дозволяють HellionChat взаємодіяти з іншими встановленими плагінами Dalamud. Кожна інтеграція автоматично визначає свою ціль і тихо вимикається, якщо цільовий плагін відсутній.</value>
</data>
@@ -1053,4 +954,195 @@
<value>Вимикає плавне перемикання тем, анімації наведення для бічної панелі та карток, а також пульсацію непрочитаних вкладок. Зміна теми та стани наведення застосовуються миттєво.</value>
<comment>AI-assisted machine translation. Pending native-speaker review.</comment>
</data>
<!-- Hellion Chat — Settings Overhaul section titles (v1.5.6) -->
<data name="Settings_Section_Input" xml:space="preserve">
<value>Введення</value>
</data>
<data name="Settings_Section_Sound" xml:space="preserve">
<value>Звук</value>
</data>
<data name="Settings_Section_Language" xml:space="preserve">
<value>Мова</value>
</data>
<data name="Settings_Section_Performance" xml:space="preserve">
<value>Продуктивність</value>
</data>
<data name="Settings_Section_Sound_TabsHint" xml:space="preserve">
<value>Звук, що відтворюється для кожної вкладки, налаштовується у вкладці «Канали».</value>
</data>
<data name="Settings_Section_Theme" xml:space="preserve">
<value>Тема</value>
</data>
<data name="Settings_Section_Fonts" xml:space="preserve">
<value>Шрифти</value>
</data>
<data name="Settings_Section_Colours" xml:space="preserve">
<value>Кольори</value>
</data>
<data name="Settings_Section_WindowStyle" xml:space="preserve">
<value>Стиль вікна</value>
</data>
<data name="Settings_Section_Timestamps" xml:space="preserve">
<value>Мітки часу</value>
</data>
<data name="Settings_Section_Animations" xml:space="preserve">
<value>Анімації</value>
</data>
<data name="Settings_Section_Messages" xml:space="preserve">
<value>Повідомлення</value>
</data>
<data name="Settings_Section_InputPreview" xml:space="preserve">
<value>Введення та попередній перегляд</value>
</data>
<data name="Settings_Section_AutoTellTabs" xml:space="preserve">
<value>Автоматичні вкладки tell</value>
</data>
<data name="Settings_Section_Emotes" xml:space="preserve">
<value>Емоції</value>
</data>
<data name="Settings_Section_LinksTooltips" xml:space="preserve">
<value>Посилання та підказки</value>
</data>
<data name="Settings_Section_NoviceNetwork" xml:space="preserve">
<value>Мережа новачків</value>
</data>
<data name="Settings_Section_Hide" xml:space="preserve">
<value>Приховати</value>
</data>
<data name="Settings_Section_InactivityHide" xml:space="preserve">
<value>Приховати при бездіяльності</value>
</data>
<data name="Settings_Section_Frame" xml:space="preserve">
<value>Рамка</value>
</data>
<data name="Settings_Section_Tab_Channels" xml:space="preserve">
<value>Канали</value>
</data>
<data name="Settings_Section_Tab_Display" xml:space="preserve">
<value>Відображення</value>
</data>
<data name="Settings_Section_Tab_Notification" xml:space="preserve">
<value>Сповіщення</value>
</data>
<data name="Settings_Section_Tab_Input" xml:space="preserve">
<value>Введення</value>
</data>
<data name="Settings_Section_Tab_PopOut" xml:space="preserve">
<value>Окреме вікно</value>
</data>
<data name="Settings_Section_Tab_Volume_AllTabsHint" xml:space="preserve">
<value>Цей рівень гучності застосовується до всіх вкладок.</value>
</data>
<data name="Settings_Section_PrivacyFilter" xml:space="preserve">
<value>Фільтр конфіденційності</value>
</data>
<data name="Settings_Section_Storage" xml:space="preserve">
<value>Сховище</value>
</data>
<data name="Settings_Section_Retention" xml:space="preserve">
<value>Зберігання</value>
</data>
<data name="Settings_Section_Cleanup" xml:space="preserve">
<value>Очищення</value>
</data>
<data name="Settings_Section_Export" xml:space="preserve">
<value>Експорт</value>
</data>
<data name="Settings_Section_Database" xml:space="preserve">
<value>База даних</value>
</data>
<data name="Settings_Section_Extensions" xml:space="preserve">
<value>Розширення</value>
</data>
<data name="Settings_Section_PluginInfo" xml:space="preserve">
<value>Інформація про плагін</value>
</data>
<data name="Settings_Section_Project" xml:space="preserve">
<value>Проект</value>
</data>
<data name="Settings_Section_Translators" xml:space="preserve">
<value>Перекладачі</value>
</data>
<data name="Settings_Section_Changelog" xml:space="preserve">
<value>Список змін</value>
</data>
<data name="Settings_Chat_NotifyFailedTell_Name" xml:space="preserve">
<value>Сповіщення про невдале повідомлення</value>
</data>
<data name="Settings_Chat_NotifyFailedTell_Description" xml:space="preserve">
<value>Показує сповіення, якщо надіслане повідомлення не було доставлено (отримувач офлайн, в інстансі або заблокував вас).</value>
</data>
<data name="Settings_Chat_NotifyPluginDisclosure_Name" xml:space="preserve">
<value>Попередження перед відправкою символів плагіна</value>
</data>
<data name="Settings_Chat_NotifyPluginDisclosure_Description" xml:space="preserve">
<value>Показує попередження, якщо повідомлення, яке ви збираєтеся надіслати, містить символи, які відображаються коректно лише у гравців з HellionChat або подібним плагіном.</value>
</data>
<data name="Settings_Chat_WorldSuffix_Name" xml:space="preserve">
<value>Суфкс світу</value>
</data>
<data name="Settings_Chat_WorldSuffix_Description" xml:space="preserve">
<value>Коли додавати назву рідного світу до імені відправника в журналі чату.</value>
</data>
<data name="Settings_Chat_NameForm_Name" xml:space="preserve">
<value>Формат імені</value>
</data>
<data name="Settings_Chat_NameForm_Description" xml:space="preserve">
<value>Як відображаються імена відправників у журналі чату. За замовчуванням — повне ім'я.</value>
</data>
<data name="NameDisplay_WorldSuffix_Never" xml:space="preserve">
<value>Ніколи</value>
</data>
<data name="NameDisplay_WorldSuffix_OtherWorldOnly" xml:space="preserve">
<value>Лише інші світи</value>
</data>
<data name="NameDisplay_WorldSuffix_Always" xml:space="preserve">
<value>Завжди</value>
</data>
<data name="NameDisplay_NameForm_Full" xml:space="preserve">
<value>Повне ім'я</value>
</data>
<data name="NameDisplay_NameForm_FirstNameOnly" xml:space="preserve">
<value>Лише ім'я</value>
</data>
<data name="NameDisplay_NameForm_Initials" xml:space="preserve">
<value>Ініціали</value>
</data>
<data name="Settings_General_CustomSoundVolume_Name" xml:space="preserve">
<value>Гучність власного звуку</value>
</data>
<data name="Settings_General_CustomSoundVolume_Description" xml:space="preserve">
<value>Гучність відтворення трьох вбудованих власних звуків сповіщень. Не впливає на 16 ігрових звуків.</value>
</data>
<data name="Settings_ThemeAndLayout_WindowOpacityInactive_Name" xml:space="preserve">
<value>Непрозорість неактивного вікна</value>
</data>
<data name="Settings_ThemeAndLayout_WindowOpacityInactive_Description" xml:space="preserve">
<value>Непрзорість фону головного вікна чату, коли воно не активне. Повзунок вище задає значення для активного вікна. Індивідуальне налаштування в меню закріплення Dalamud має пріоритет над обома.</value>
</data>
<data name="Tabs_NotificationSound_Enable_Name" xml:space="preserve">
<value>Звук сповіщення</value>
</data>
<data name="Tabs_NotificationSound_Description" xml:space="preserve">
<value>Відтворює звук, коли повідомлення надходить на цю вкладку, поки ви дивитесь іншу вкладку. Враховує глобальний перемикач звуку.</value>
</data>
<data name="Tabs_NotificationSound_Option" xml:space="preserve">
<value>Звук</value>
</data>
<data name="Tabs_NotificationSound_Preview" xml:space="preserve">
<value>Попередній перегляд обраного звуку</value>
</data>
<data name="Tabs_NotificationSound_CustomOption" xml:space="preserve">
<value>Звук Hellion</value>
</data>
<data name="FailedTell_Notification_Generic" xml:space="preserve">
<value>Повідомлення не було доставлено.</value>
</data>
<data name="FailedTell_Notification_Named" xml:space="preserve">
<value>Повідомлення для {0} не було доставлено.</value>
</data>
<data name="ChatInput_PluginDisclosure_Warning" xml:space="preserve">
<value>Це повідомлення містить символи плагіна, які інші грвці можуть бачити як порожні квадрати. Натисніть Enter ще раз, щоб надіслати все одно.</value>
</data>
</root>
+195 -103
View File
@@ -12,9 +12,6 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Privacy_Tab_Title" xml:space="preserve">
<value>隐私</value>
</data>
<data name="Privacy_FilterEnabled_Name" xml:space="preserve">
<value>启用隐私过滤器</value>
</data>
@@ -24,9 +21,6 @@
<data name="Privacy_FilterEnabled_StorageOnly_Help" xml:space="preserve">
<value>过滤器仅控制写入本地数据库的内容。聊天记录中仍会实时显示所有消息,被排除的频道只是不再被保存。如需从可见显示中移除某些频道,请使用游戏内正常的聊天标签页过滤功能。</value>
</data>
<data name="Privacy_Filter_Tree_Heading" xml:space="preserve">
<value>隐私过滤器与白名单</value>
</data>
<data name="Privacy_Whitelist_Help" xml:space="preserve">
<value>选择哪些频道保存到本地数据库。默认遵循数据最小化原则,仅保存你自己的对话。点击下方按钮可应用预设方案。</value>
</data>
@@ -597,18 +591,6 @@
</data>
<!-- Hellion Chat — General tab section headings -->
<data name="Settings_General_Input_Heading" xml:space="preserve">
<value>输入</value>
</data>
<data name="Settings_General_Audio_Heading" xml:space="preserve">
<value>音频 &amp; 通知</value>
</data>
<data name="Settings_General_Performance_Heading" xml:space="preserve">
<value>性能</value>
</data>
<data name="Settings_General_Language_Heading" xml:space="preserve">
<value>语言 &amp; 输入辅助</value>
</data>
<!-- Hellion Chat — Appearance tab section headings -->
<data name="Settings_Appearance_Theme_Heading" xml:space="preserve">
@@ -625,32 +607,11 @@
</data>
<!-- Hellion Chat — Window tab section headings -->
<data name="Settings_Window_Hide_Heading" xml:space="preserve">
<value>隐藏</value>
</data>
<data name="Settings_Window_InactivityHide_Heading" xml:space="preserve">
<value>闲置隐藏</value>
</data>
<data name="Settings_Window_Frame_Heading" xml:space="preserve">
<value>窗口边框</value>
</data>
<data name="Settings_Window_Tooltips_Heading" xml:space="preserve">
<value>提示框</value>
</data>
<!-- Hellion Chat — Chat tab section headings -->
<data name="Settings_Chat_AutoTellTabs_Heading" xml:space="preserve">
<value>Auto-Tell-Tabs</value>
</data>
<data name="Settings_Chat_Behaviour_Heading" xml:space="preserve">
<value>消息行为</value>
</data>
<data name="Settings_Chat_Preview_Heading" xml:space="preserve">
<value>预览</value>
</data>
<data name="Settings_Chat_Emotes_Heading" xml:space="preserve">
<value>情感动作</value>
</data>
<!-- Hellion Chat — Chat tab SymbolPicker -->
<data name="Settings_Chat_SymbolPicker_Enable_Name" xml:space="preserve">
@@ -672,15 +633,6 @@
</data>
<!-- Hellion Chat — Information tab section headings -->
<data name="Settings_Information_VersionInfo_Heading" xml:space="preserve">
<value>版本信息</value>
</data>
<data name="Settings_Information_About_Heading" xml:space="preserve">
<value>关于 HellionChat</value>
</data>
<data name="Settings_Information_Changelog_Heading" xml:space="preserve">
<value>Changelog</value>
</data>
<!-- Hellion Chat — Default tab presets (channel-specific) -->
<data name="Tabs_Presets_System" xml:space="preserve">
@@ -811,12 +763,6 @@
<data name="Settings_Card_Tabs_Subtext" xml:space="preserve">
<value>创建并配置自定义聊天标签页。</value>
</data>
<data name="Settings_Card_Privacy_Title" xml:space="preserve">
<value>隐私</value>
</data>
<data name="Settings_Card_Privacy_Subtext" xml:space="preserve">
<value>各频道的隐私过滤器及允许保存的内容。</value>
</data>
<data name="Settings_Card_Database_Title" xml:space="preserve">
<value>数据库</value>
</data>
@@ -824,10 +770,10 @@
<value>存储、迁移、历史清理</value>
</data>
<data name="Settings_Card_Information_Title" xml:space="preserve">
<value>信息</value>
<value>关于</value>
</data>
<data name="Settings_Card_Information_Subtext" xml:space="preserve">
<value>版本、理念、许可证与更新日志。</value>
<value>扩展、版本、项目信息、译者与更新日志。</value>
</data>
<data name="Settings_Tab_Themes" xml:space="preserve">
<value>主题</value>
@@ -868,29 +814,11 @@
<data name="Appearance_UseCompactDensity_Description" xml:space="preserve">
<value>将消息布局从默认的卡片行样式切换回单行 `[HH:mm] 发送者: 文本` 显示。</value>
</data>
<data name="Settings_Card_ThemeAndLayout_Title" xml:space="preserve">
<value>Theme &amp; Layout</value>
</data>
<data name="Settings_Card_ThemeAndLayout_Subtext" xml:space="preserve">
<value>主题、窗口边框与时间戳样式。</value>
</data>
<data name="Settings_Card_FontsAndColours_Title" xml:space="preserve">
<value>Fonts &amp; Colours</value>
</data>
<data name="Settings_Card_FontsAndColours_Subtext" xml:space="preserve">
<value>字体、字号与各频道聊天颜色。</value>
</data>
<data name="Settings_Card_DataManagement_Title" xml:space="preserve">
<value>数据管理</value>
<value>数据与隐私</value>
</data>
<data name="Settings_Card_DataManagement_Subtext" xml:space="preserve">
<value>保留策略、清理、导出与数据库统计。</value>
</data>
<data name="Settings_Card_Integrations_Title" xml:space="preserve">
<value>集成</value>
</data>
<data name="Settings_Card_Integrations_Subtext" xml:space="preserve">
<value>与 HellionChat 协同工作的其他 Dalamud 插件。即将推出的集成预览。</value>
<value>隐私过滤器、保留策略、清理、导出与数据库统计。</value>
</data>
<data name="Settings_ThemeAndLayout_Theme_Heading" xml:space="preserve">
<value>主题</value>
@@ -907,39 +835,12 @@
<data name="Settings_ThemeAndLayout_WindowOpacity_Description" xml:space="preserve">
<value>窗口背景的透明程度。数值越低,游戏背景透视效果越强。提示:Dalamud 的单窗口菜单(标题栏中的汉堡菜单)为每个窗口提供不透明度、背景模糊、点击穿透和固定等独立覆盖选项,这些设置对对应窗口具有优先级。</value>
</data>
<data name="Settings_FontsAndColours_Fonts_Heading" xml:space="preserve">
<value>字体</value>
</data>
<data name="Settings_FontsAndColours_Colours_Heading" xml:space="preserve">
<value>聊天颜色</value>
</data>
<data name="Settings_DataManagement_Storage_Heading" xml:space="preserve">
<value>存储</value>
</data>
<data name="Settings_DataManagement_Retention_Heading" xml:space="preserve">
<value>保留</value>
</data>
<data name="Settings_DataManagement_Cleanup_Heading" xml:space="preserve">
<value>清理</value>
</data>
<data name="Settings_DataManagement_Export_Heading" xml:space="preserve">
<value>导出</value>
</data>
<data name="Settings_DataManagement_DbViewer_Heading" xml:space="preserve">
<value>数据库查看器</value>
</data>
<data name="Settings_DataManagement_Advanced_Heading" xml:space="preserve">
<value>高级选项(Shift+点击展开)</value>
</data>
<data name="Settings_Window_Frame_Behaviour_Heading" xml:space="preserve">
<value>行为</value>
</data>
<data name="Migration_v16_OverrideStyle_Toast" xml:space="preserve">
<value>Hellion Chat 1.2.1 已重新整理设置菜单,并移除了旧版"覆盖样式"选项(已由 1.1.0 引入的主题系统取代)。其余设置保持不变。窗口透明度已迁移至"Theme &amp; Layout"。上一版配置的备份文件位于活动 HellionChat.json 旁边,文件名为 pluginConfigs/HellionChat.json.pre-v16-backup。</value>
</data>
<data name="Settings_Tab_Integrations" xml:space="preserve">
<value>集成</value>
</data>
<data name="Settings_Integrations_Intro" xml:space="preserve">
<value>插件集成功能让 HellionChat 能与其他已安装的 Dalamud 插件协同工作。每项集成会自动检测目标插件,目标插件缺失时将静默禁用。</value>
</data>
@@ -1054,4 +955,195 @@
<value>禁用主题交叉淡入淡出、侧边栏和卡片的悬停动画以及未读标签页的脉冲效果。主题切换和悬停状态将立即应用。</value>
<comment>AI-assisted machine translation. Pending native-speaker review.</comment>
</data>
<!-- Hellion Chat — Settings Overhaul section titles (v1.5.6) -->
<data name="Settings_Section_Input" xml:space="preserve">
<value>输入</value>
</data>
<data name="Settings_Section_Sound" xml:space="preserve">
<value>声音</value>
</data>
<data name="Settings_Section_Language" xml:space="preserve">
<value>语言</value>
</data>
<data name="Settings_Section_Performance" xml:space="preserve">
<value>性能</value>
</data>
<data name="Settings_Section_Sound_TabsHint" xml:space="preserve">
<value>每个标签页的提示音可在“频道”标签页中设置。</value>
</data>
<data name="Settings_Section_Theme" xml:space="preserve">
<value>主题</value>
</data>
<data name="Settings_Section_Fonts" xml:space="preserve">
<value>字体</value>
</data>
<data name="Settings_Section_Colours" xml:space="preserve">
<value>颜色</value>
</data>
<data name="Settings_Section_WindowStyle" xml:space="preserve">
<value>窗口样式</value>
</data>
<data name="Settings_Section_Timestamps" xml:space="preserve">
<value>时间戳</value>
</data>
<data name="Settings_Section_Animations" xml:space="preserve">
<value>动画</value>
</data>
<data name="Settings_Section_Messages" xml:space="preserve">
<value>消息</value>
</data>
<data name="Settings_Section_InputPreview" xml:space="preserve">
<value>输入与预览</value>
</data>
<data name="Settings_Section_AutoTellTabs" xml:space="preserve">
<value>自动Tell标签页</value>
</data>
<data name="Settings_Section_Emotes" xml:space="preserve">
<value>表情动作</value>
</data>
<data name="Settings_Section_LinksTooltips" xml:space="preserve">
<value>链接与工具提示</value>
</data>
<data name="Settings_Section_NoviceNetwork" xml:space="preserve">
<value>新人频道</value>
</data>
<data name="Settings_Section_Hide" xml:space="preserve">
<value>隐藏</value>
</data>
<data name="Settings_Section_InactivityHide" xml:space="preserve">
<value>无操作时隐藏</value>
</data>
<data name="Settings_Section_Frame" xml:space="preserve">
<value>边框</value>
</data>
<data name="Settings_Section_Tab_Channels" xml:space="preserve">
<value>频道</value>
</data>
<data name="Settings_Section_Tab_Display" xml:space="preserve">
<value>显示</value>
</data>
<data name="Settings_Section_Tab_Notification" xml:space="preserve">
<value>通知</value>
</data>
<data name="Settings_Section_Tab_Input" xml:space="preserve">
<value>输入</value>
</data>
<data name="Settings_Section_Tab_PopOut" xml:space="preserve">
<value>弹出窗口</value>
</data>
<data name="Settings_Section_Tab_Volume_AllTabsHint" xml:space="preserve">
<value>此音量适用于所有标签页。</value>
</data>
<data name="Settings_Section_PrivacyFilter" xml:space="preserve">
<value>隐私过滤器</value>
</data>
<data name="Settings_Section_Storage" xml:space="preserve">
<value>存储</value>
</data>
<data name="Settings_Section_Retention" xml:space="preserve">
<value>保留策略</value>
</data>
<data name="Settings_Section_Cleanup" xml:space="preserve">
<value>清理</value>
</data>
<data name="Settings_Section_Export" xml:space="preserve">
<value>导出</value>
</data>
<data name="Settings_Section_Database" xml:space="preserve">
<value>数据库</value>
</data>
<data name="Settings_Section_Extensions" xml:space="preserve">
<value>扩展</value>
</data>
<data name="Settings_Section_PluginInfo" xml:space="preserve">
<value>插件信息</value>
</data>
<data name="Settings_Section_Project" xml:space="preserve">
<value>项目</value>
</data>
<data name="Settings_Section_Translators" xml:space="preserve">
<value>译者</value>
</data>
<data name="Settings_Section_Changelog" xml:space="preserve">
<value>更新日志</value>
</data>
<data name="Settings_Chat_NotifyFailedTell_Name" xml:space="preserve">
<value>悄悄话失败通知</value>
</data>
<data name="Settings_Chat_NotifyFailedTell_Description" xml:space="preserve">
<value>当发送的悄悄话无法送达时(对方离线、在副本中或屏蔽了你),显示提示通知。</value>
</data>
<data name="Settings_Chat_NotifyPluginDisclosure_Name" xml:space="preserve">
<value>发送插件专用符号前警告</value>
</data>
<data name="Settings_Chat_NotifyPluginDisclosure_Description" xml:space="preserve">
<value>当即将发送的消息包含仅在使用 HellionChat 或类似插件的玩家端正确显示的符号时,显示警告。</value>
</data>
<data name="Settings_Chat_WorldSuffix_Name" xml:space="preserve">
<value>服务器后缀</value>
</data>
<data name="Settings_Chat_WorldSuffix_Description" xml:space="preserve">
<value>在聊天记录中,何时在发言者名称后附加其所在服务器。</value>
</data>
<data name="Settings_Chat_NameForm_Name" xml:space="preserve">
<value>名称格式</value>
</data>
<data name="Settings_Chat_NameForm_Description" xml:space="preserve">
<value>聊天记录中发者名称的显示方式。默认为全名。</value>
</data>
<data name="NameDisplay_WorldSuffix_Never" xml:space="preserve">
<value>从不</value>
</data>
<data name="NameDisplay_WorldSuffix_OtherWorldOnly" xml:space="preserve">
<value>仅其他服务器</value>
</data>
<data name="NameDisplay_WorldSuffix_Always" xml:space="preserve">
<value>始终</value>
</data>
<data name="NameDisplay_NameForm_Full" xml:space="preserve">
<value>全名</value>
</data>
<data name="NameDisplay_NameForm_FirstNameOnly" xml:space="preserve">
<value>仅名</value>
</data>
<data name="NameDisplay_NameForm_Initials" xml:space="preserve">
<value>首字母</value>
</data>
<data name="Settings_General_CustomSoundVolume_Name" xml:space="preserve">
<value>自定义通知音量</value>
</data>
<data name="Settings_General_CustomSoundVolume_Description" xml:space="preserve">
<value>三个内置自定义通知音的播放音量。不影响游戏的 16 个内置音效。</value>
</data>
<data name="Settings_ThemeAndLayout_WindowOpacityInactive_Name" xml:space="preserve">
<value>非激活窗口透明度</value>
</data>
<data name="Settings_ThemeAndLayout_WindowOpacityInactive_Description" xml:space="preserve">
<value>主聊天窗口未获焦点的背景透明度。上方滑块设置获焦时的值。Dalamud 窗口固定菜单中的单独窗口设置优先级高于二者。</value>
</data>
<data name="Tabs_NotificationSound_Enable_Name" xml:space="preserve">
<value>通知音效</value>
</data>
<data name="Tabs_NotificationSound_Description" xml:space="preserve">
<value>当你在查看其他标签页时,此标签页收到消息时播放音效。遵循全局音效开关。</value>
</data>
<data name="Tabs_NotificationSound_Option" xml:space="preserve">
<value>音效</value>
</data>
<data name="Tabs_NotificationSound_Preview" xml:space="preserve">
<value>预览所选音效</value>
</data>
<data name="Tabs_NotificationSound_CustomOption" xml:space="preserve">
<value>Hellion 音效</value>
</data>
<data name="FailedTell_Notification_Generic" xml:space="preserve">
<value>悄悄话未能送达。</value>
</data>
<data name="FailedTell_Notification_Named" xml:space="preserve">
<value>发送给 {0} 的悄悄话未能送达。</value>
</data>
<data name="ChatInput_PluginDisclosure_Warning" xml:space="preserve">
<value>该消息包含插件专用符号,其他玩家可能看到空白方框。再次按 Enter 键强制发送。</value>
</data>
</root>
+195 -103
View File
@@ -12,9 +12,6 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Privacy_Tab_Title" xml:space="preserve">
<value>隱私</value>
</data>
<data name="Privacy_FilterEnabled_Name" xml:space="preserve">
<value>啟用隱私篩選器</value>
</data>
@@ -24,9 +21,6 @@
<data name="Privacy_FilterEnabled_StorageOnly_Help" xml:space="preserve">
<value>篩選器只控制寫入本地資料庫的內容。聊天紀錄仍會即時顯示所有訊息,被排除的頻道只是不再儲存。如果你也想從可見畫面中移除頻道,請使用遊戲內一般聊天標籤頁的篩選器。</value>
</data>
<data name="Privacy_Filter_Tree_Heading" xml:space="preserve">
<value>隱私篩選器與白名單</value>
</data>
<data name="Privacy_Whitelist_Help" xml:space="preserve">
<value>選擇要儲存到本地資料庫的頻道。預設遵循資料最小化原則:只儲存你自己的對話。使用下方按鈕套用預設值。</value>
</data>
@@ -597,18 +591,6 @@
</data>
<!-- Hellion Chat — General tab section headings -->
<data name="Settings_General_Input_Heading" xml:space="preserve">
<value>輸入</value>
</data>
<data name="Settings_General_Audio_Heading" xml:space="preserve">
<value>音效 &amp; 通知</value>
</data>
<data name="Settings_General_Performance_Heading" xml:space="preserve">
<value>效能</value>
</data>
<data name="Settings_General_Language_Heading" xml:space="preserve">
<value>語言 &amp; 輸入輔助</value>
</data>
<!-- Hellion Chat — Appearance tab section headings -->
<data name="Settings_Appearance_Theme_Heading" xml:space="preserve">
@@ -625,32 +607,11 @@
</data>
<!-- Hellion Chat — Window tab section headings -->
<data name="Settings_Window_Hide_Heading" xml:space="preserve">
<value>隱藏</value>
</data>
<data name="Settings_Window_InactivityHide_Heading" xml:space="preserve">
<value>閒置隱藏</value>
</data>
<data name="Settings_Window_Frame_Heading" xml:space="preserve">
<value>視窗框架</value>
</data>
<data name="Settings_Window_Tooltips_Heading" xml:space="preserve">
<value>提示</value>
</data>
<!-- Hellion Chat — Chat tab section headings -->
<data name="Settings_Chat_AutoTellTabs_Heading" xml:space="preserve">
<value>Auto-Tell-Tabs</value>
</data>
<data name="Settings_Chat_Behaviour_Heading" xml:space="preserve">
<value>訊息行為</value>
</data>
<data name="Settings_Chat_Preview_Heading" xml:space="preserve">
<value>預覽</value>
</data>
<data name="Settings_Chat_Emotes_Heading" xml:space="preserve">
<value>情感動作</value>
</data>
<!-- Hellion Chat — Chat tab SymbolPicker -->
<data name="Settings_Chat_SymbolPicker_Enable_Name" xml:space="preserve">
@@ -672,15 +633,6 @@
</data>
<!-- Hellion Chat — Information tab section headings -->
<data name="Settings_Information_VersionInfo_Heading" xml:space="preserve">
<value>版本資訊</value>
</data>
<data name="Settings_Information_About_Heading" xml:space="preserve">
<value>關於 HellionChat</value>
</data>
<data name="Settings_Information_Changelog_Heading" xml:space="preserve">
<value>Changelog</value>
</data>
<!-- Hellion Chat — Default tab presets (channel-specific) -->
<data name="Tabs_Presets_System" xml:space="preserve">
@@ -811,12 +763,6 @@
<data name="Settings_Card_Tabs_Subtext" xml:space="preserve">
<value>建立和設定自訂聊天標籤頁。</value>
</data>
<data name="Settings_Card_Privacy_Title" xml:space="preserve">
<value>隱私</value>
</data>
<data name="Settings_Card_Privacy_Subtext" xml:space="preserve">
<value>各頻道的隱私篩選器及可儲存的內容。</value>
</data>
<data name="Settings_Card_Database_Title" xml:space="preserve">
<value>資料庫</value>
</data>
@@ -824,10 +770,10 @@
<value>儲存、遷移、舊版清理</value>
</data>
<data name="Settings_Card_Information_Title" xml:space="preserve">
<value>資訊</value>
<value>關於</value>
</data>
<data name="Settings_Card_Information_Subtext" xml:space="preserve">
<value>版本、使命、授權和 Changelog。</value>
<value>擴充功能、版本、專案資訊、譯者和 Changelog。</value>
</data>
<data name="Settings_Tab_Themes" xml:space="preserve">
<value>佈景主題</value>
@@ -868,29 +814,11 @@
<data name="Appearance_UseCompactDensity_Description" xml:space="preserve">
<value>將訊息版面從預設的卡片列切換回單行 `[HH:mm] 發送者: 文字` 的顯示方式。</value>
</data>
<data name="Settings_Card_ThemeAndLayout_Title" xml:space="preserve">
<value>Theme &amp; Layout</value>
</data>
<data name="Settings_Card_ThemeAndLayout_Subtext" xml:space="preserve">
<value>佈景主題、視窗框架和時間戳樣式。</value>
</data>
<data name="Settings_Card_FontsAndColours_Title" xml:space="preserve">
<value>Fonts &amp; Colours</value>
</data>
<data name="Settings_Card_FontsAndColours_Subtext" xml:space="preserve">
<value>字型、字型大小和各頻道的聊天顏色。</value>
</data>
<data name="Settings_Card_DataManagement_Title" xml:space="preserve">
<value>資料管理</value>
<value>資料與隱私</value>
</data>
<data name="Settings_Card_DataManagement_Subtext" xml:space="preserve">
<value>保留、清理、匯出和資料庫統計資訊。</value>
</data>
<data name="Settings_Card_Integrations_Title" xml:space="preserve">
<value>整合</value>
</data>
<data name="Settings_Card_Integrations_Subtext" xml:space="preserve">
<value>HellionChat 可搭配使用的其他 Dalamud 插件。即將推出的整合功能預覽。</value>
<value>隱私過濾器、保留、清理、匯出和資料庫統計資訊。</value>
</data>
<data name="Settings_ThemeAndLayout_Theme_Heading" xml:space="preserve">
<value>佈景主題</value>
@@ -907,39 +835,12 @@
<data name="Settings_ThemeAndLayout_WindowOpacity_Description" xml:space="preserve">
<value>視窗背景的透明程度。數值越低,遊戲畫面越能透出。提示:Dalamud 的每個視窗選單(標題列的漢堡選單)提供各視窗獨立的不透明度、背景模糊、點擊穿透和釘選覆寫設定,這些設定對各自的視窗有優先於此滑桿的效果。</value>
</data>
<data name="Settings_FontsAndColours_Fonts_Heading" xml:space="preserve">
<value>字型</value>
</data>
<data name="Settings_FontsAndColours_Colours_Heading" xml:space="preserve">
<value>聊天頻道顏色</value>
</data>
<data name="Settings_DataManagement_Storage_Heading" xml:space="preserve">
<value>儲存</value>
</data>
<data name="Settings_DataManagement_Retention_Heading" xml:space="preserve">
<value>保留</value>
</data>
<data name="Settings_DataManagement_Cleanup_Heading" xml:space="preserve">
<value>清理</value>
</data>
<data name="Settings_DataManagement_Export_Heading" xml:space="preserve">
<value>匯出</value>
</data>
<data name="Settings_DataManagement_DbViewer_Heading" xml:space="preserve">
<value>資料庫檢視器</value>
</data>
<data name="Settings_DataManagement_Advanced_Heading" xml:space="preserve">
<value>進階(Shift+點擊開啟)</value>
</data>
<data name="Settings_Window_Frame_Behaviour_Heading" xml:space="preserve">
<value>行為</value>
</data>
<data name="Migration_v16_OverrideStyle_Toast" xml:space="preserve">
<value>Hellion Chat 1.2.1 已重新整理設定選單,並移除舊的「覆寫樣式」選項(已由 1.1.0 的佈景主題系統取代)。你其餘的設定保持不變。視窗透明度已遷移至「Theme &amp; Layout」。先前設定的備份位於 pluginConfigs/HellionChat.json.pre-v16-backup,與目前使用中的 HellionChat.json 位於同一目錄。</value>
</data>
<data name="Settings_Tab_Integrations" xml:space="preserve">
<value>整合</value>
</data>
<data name="Settings_Integrations_Intro" xml:space="preserve">
<value>插件整合功能讓 HellionChat 能與其他已安裝的 Dalamud 插件協同運作。每個整合功能會自動偵測目標插件,並在目標插件不存在時靜默停用自身。</value>
</data>
@@ -1054,4 +955,195 @@
<value>停用佈景主題交叉淡入淡出、側邊欄與卡片的滑鼠停留動畫以及未讀分頁的脈衝效果。佈景主題切換與滑鼠停留狀態將立即套用。</value>
<comment>AI-assisted machine translation. Pending native-speaker review.</comment>
</data>
<!-- Hellion Chat — Settings Overhaul section titles (v1.5.6) -->
<data name="Settings_Section_Input" xml:space="preserve">
<value>輸入</value>
</data>
<data name="Settings_Section_Sound" xml:space="preserve">
<value>聲音</value>
</data>
<data name="Settings_Section_Language" xml:space="preserve">
<value>語言</value>
</data>
<data name="Settings_Section_Performance" xml:space="preserve">
<value>效能</value>
</data>
<data name="Settings_Section_Sound_TabsHint" xml:space="preserve">
<value>每個標籤頁的提示音可在「頻道」標籤頁中設定。</value>
</data>
<data name="Settings_Section_Theme" xml:space="preserve">
<value>主題</value>
</data>
<data name="Settings_Section_Fonts" xml:space="preserve">
<value>字型</value>
</data>
<data name="Settings_Section_Colours" xml:space="preserve">
<value>顏色</value>
</data>
<data name="Settings_Section_WindowStyle" xml:space="preserve">
<value>視窗樣式</value>
</data>
<data name="Settings_Section_Timestamps" xml:space="preserve">
<value>時間戳記</value>
</data>
<data name="Settings_Section_Animations" xml:space="preserve">
<value>動畫</value>
</data>
<data name="Settings_Section_Messages" xml:space="preserve">
<value>訊息</value>
</data>
<data name="Settings_Section_InputPreview" xml:space="preserve">
<value>輸入與預覽</value>
</data>
<data name="Settings_Section_AutoTellTabs" xml:space="preserve">
<value>自動Tell標籤頁</value>
</data>
<data name="Settings_Section_Emotes" xml:space="preserve">
<value>情感動作</value>
</data>
<data name="Settings_Section_LinksTooltips" xml:space="preserve">
<value>連結與工具提示</value>
</data>
<data name="Settings_Section_NoviceNetwork" xml:space="preserve">
<value>新手頻道</value>
</data>
<data name="Settings_Section_Hide" xml:space="preserve">
<value>隱藏</value>
</data>
<data name="Settings_Section_InactivityHide" xml:space="preserve">
<value>閒置時隱藏</value>
</data>
<data name="Settings_Section_Frame" xml:space="preserve">
<value>邊框</value>
</data>
<data name="Settings_Section_Tab_Channels" xml:space="preserve">
<value>頻道</value>
</data>
<data name="Settings_Section_Tab_Display" xml:space="preserve">
<value>顯示</value>
</data>
<data name="Settings_Section_Tab_Notification" xml:space="preserve">
<value>通知</value>
</data>
<data name="Settings_Section_Tab_Input" xml:space="preserve">
<value>輸入</value>
</data>
<data name="Settings_Section_Tab_PopOut" xml:space="preserve">
<value>彈出視窗</value>
</data>
<data name="Settings_Section_Tab_Volume_AllTabsHint" xml:space="preserve">
<value>此音量適用於所有標籤頁。</value>
</data>
<data name="Settings_Section_PrivacyFilter" xml:space="preserve">
<value>隱私過濾器</value>
</data>
<data name="Settings_Section_Storage" xml:space="preserve">
<value>儲存</value>
</data>
<data name="Settings_Section_Retention" xml:space="preserve">
<value>保留原則</value>
</data>
<data name="Settings_Section_Cleanup" xml:space="preserve">
<value>清理</value>
</data>
<data name="Settings_Section_Export" xml:space="preserve">
<value>匯出</value>
</data>
<data name="Settings_Section_Database" xml:space="preserve">
<value>資料庫</value>
</data>
<data name="Settings_Section_Extensions" xml:space="preserve">
<value>擴充功能</value>
</data>
<data name="Settings_Section_PluginInfo" xml:space="preserve">
<value>插件資訊</value>
</data>
<data name="Settings_Section_Project" xml:space="preserve">
<value>專案</value>
</data>
<data name="Settings_Section_Translators" xml:space="preserve">
<value>譯者</value>
</data>
<data name="Settings_Section_Changelog" xml:space="preserve">
<value>更新記錄</value>
</data>
<data name="Settings_Chat_NotifyFailedTell_Name" xml:space="preserve">
<value>悄悄話失敗通知</value>
</data>
<data name="Settings_Chat_NotifyFailedTell_Description" xml:space="preserve">
<value>當發送的悄悄話無法送達時(對方離線、在副本中或封鎖了你),顯示提示通知。</value>
</data>
<data name="Settings_Chat_NotifyPluginDisclosure_Name" xml:space="preserve">
<value>發送插件專用符號前警告</value>
</data>
<data name="Settings_Chat_NotifyPluginDisclosure_Description" xml:space="preserve">
<value>當即將發送的訊息包含僅在使用 HellionChat 或類似插件的玩家端正確顯示的符號時,顯示警告。</value>
</data>
<data name="Settings_Chat_WorldSuffix_Name" xml:space="preserve">
<value>伺服器後綴</value>
</data>
<data name="Settings_Chat_WorldSuffix_Description" xml:space="preserve">
<value>在聊天記錄中,何時在發言者名稱後附加其所在伺服器。</value>
</data>
<data name="Settings_Chat_NameForm_Name" xml:space="preserve">
<value>名稱格式</value>
</data>
<data name="Settings_Chat_NameForm_Description" xml:space="preserve">
<value>聊天記錄中發言者名稱的顯示方式。預設為全名。</value>
</data>
<data name="NameDisplay_WorldSuffix_Never" xml:space="preserve">
<value>從不</value>
</data>
<data name="NameDisplay_WorldSuffix_OtherWorldOnly" xml:space="preserve">
<value>僅其他伺服器</value>
</data>
<data name="NameDisplay_WorldSuffix_Always" xml:space="preserve">
<value>始終</value>
</data>
<data name="NameDisplay_NameForm_Full" xml:space="preserve">
<value>全名</value>
</data>
<data name="NameDisplay_NameForm_FirstNameOnly" xml:space="preserve">
<value>僅名</value>
</data>
<data name="NameDisplay_NameForm_Initials" xml:space="preserve">
<value>首字母縮寫</value>
</data>
<data name="Settings_General_CustomSoundVolume_Name" xml:space="preserve">
<value>自訂通知音量</value>
</data>
<data name="Settings_General_CustomSoundVolume_Description" xml:space="preserve">
<value>三個內建自訂通知音的播放音量。不影響遊戲的 16 個內建音效。</value>
</data>
<data name="Settings_ThemeAndLayout_WindowOpacityInactive_Name" xml:space="preserve">
<value>非啟用視窗透明度</value>
</data>
<data name="Settings_ThemeAndLayout_WindowOpacityInactive_Description" xml:space="preserve">
<value>主聊天視窗未獲焦點時的背景透明度。上方滑桿設定獲焦時的值。Dalamud 窗固定選單中的個別視窗設定優先於兩者。</value>
</data>
<data name="Tabs_NotificationSound_Enable_Name" xml:space="preserve">
<value>通知音效</value>
</data>
<data name="Tabs_NotificationSound_Description" xml:space="preserve">
<value>當你在查看其他分頁時,此分頁收到訊息時播放音效。遵循全域音效開關。</value>
</data>
<data name="Tabs_NotificationSound_Option" xml:space="preserve">
<value>音效</value>
</data>
<data name="Tabs_NotificationSound_Preview" xml:space="preserve">
<value>預覽所選音效</value>
</data>
<data name="Tabs_NotificationSound_CustomOption" xml:space="preserve">
<value>Hellion 音效</value>
</data>
<data name="FailedTell_Notification_Generic" xml:space="preserve">
<value>悄悄話未能送達。</value>
</data>
<data name="FailedTell_Notification_Named" xml:space="preserve">
<value>發送給 {0} 的悄悄話未能送達。</value>
</data>
<data name="ChatInput_PluginDisclosure_Warning" xml:space="preserve">
<value>該訊息包含插件專用符號,其他玩家可能看到空白方框。再次按 Enter 鍵強制發送。</value>
</data>
</root>
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,47 @@
using Dalamud.Bindings.ImGui;
using Dalamud.Plugin.SelfTest;
using HellionChat.Branding;
namespace HellionChat.SelfTests;
// Verifies the embedded fox-banner PNG decodes into a usable texture. The load
// is async, so the step returns Waiting until Dalamud finishes the decode and
// the self-test runner re-polls. A decode or resource error is a build defect
// and fails the step hard. The resource lives in the DLL, it cannot be a
// runtime miss.
internal sealed class FoxBannerTextureSmokeStep : ISelfTestStep
{
private readonly Plugin plugin;
public FoxBannerTextureSmokeStep(Plugin plugin)
{
this.plugin = plugin;
}
public string Name => "Hellion Chat - Fox banner texture smoke";
public SelfTestStepResult RunStep()
{
if (!FoxBannerTexture.Shared.TryGetWrap(out var wrap, out var ex))
{
if (ex is not null)
{
ImGui.Text($"Fox banner load failed: {ex.Message}");
return SelfTestStepResult.Fail;
}
ImGui.Text("Fox banner still loading...");
return SelfTestStepResult.Waiting;
}
if (wrap.Size.X <= 0 || wrap.Size.Y <= 0)
{
ImGui.Text($"Fox banner has degenerate size {wrap.Size}");
return SelfTestStepResult.Fail;
}
return SelfTestStepResult.Pass;
}
public void CleanUp() { }
}
+37 -1
View File
@@ -1,9 +1,11 @@
using System;
using System.Numerics;
using Dalamud.Bindings.ImGui;
using Dalamud.Interface.Colors;
using Dalamud.Interface.Utility.Raii;
using HellionChat._Helpers;
using HellionChat.Code;
using HellionChat.Resources;
using HellionChat.Util;
namespace HellionChat.Ui;
@@ -19,6 +21,11 @@ public sealed class ChatInputBar
private readonly Func<Tab?> _activeTabAccessor;
private readonly InputState _state = new();
// UI-11: the buffer for which a plugin-disclosure warning was already
// shown. A second Enter on the same buffer sends it anyway; editing the
// buffer clears the arming so the next send is re-checked.
private string? _disclosureArmedBuffer;
public ChatInputBar(Plugin plugin, ChatLogWindow host, Func<Tab?> activeTabAccessor)
{
_plugin = plugin;
@@ -80,11 +87,40 @@ public sealed class ChatInputBar
{
SubmitCompact(tab);
}
// UI-11: disclosure warning, visible only while an armed buffer is held
// unchanged. Editing the buffer clears the condition automatically.
if (
Plugin.Config.NotifyPluginDisclosure
&& _disclosureArmedBuffer is not null
&& _state.Buffer == _disclosureArmedBuffer
)
{
ImGui.TextColored(
ImGuiColors.DalamudYellow,
HellionStrings.ChatInput_PluginDisclosure_Warning
);
}
}
// TEST-MIRROR: ../_Helpers/CompactInputSubmitter.cs
private void SubmitCompact(Tab tab) =>
private void SubmitCompact(Tab tab)
{
if (
Plugin.Config.NotifyPluginDisclosure
&& _state.Buffer != _disclosureArmedBuffer
&& PluginDisclosureScanner.ContainsPrivateUseGlyph(_state.Buffer)
)
{
// First send attempt on this exact buffer: arm and hold. The buffer
// is kept, the warning renders, the user can press Enter again.
_disclosureArmedBuffer = _state.Buffer;
return;
}
_disclosureArmedBuffer = null;
CompactInputSubmitter.TrySubmit(_state, tab, _host.SendChatBoxFromExternal);
}
// History navigation callback. Cursor math delegated to
// CompactInputHistoryNavigator; ImGui buffer splice stays here.
+184 -21
View File
@@ -8,12 +8,15 @@ using Dalamud.Game.Addon.Lifecycle;
using Dalamud.Game.Text.SeStringHandling;
using Dalamud.Game.Text.SeStringHandling.Payloads;
using Dalamud.Interface;
using Dalamud.Interface.Colors;
using Dalamud.Interface.Style;
using Dalamud.Interface.Utility;
using Dalamud.Interface.Utility.Raii;
using Dalamud.Interface.Windowing;
using Dalamud.Memory;
using FFXIVClientStructs.FFXIV.Client.UI;
using FFXIVClientStructs.FFXIV.Client.UI.Agent;
using HellionChat._Helpers;
using HellionChat.Code;
using HellionChat.GameFunctions;
using HellionChat.GameFunctions.Types;
@@ -54,6 +57,11 @@ public sealed class ChatLogWindow : Window
private int ActivatePos = -1;
internal string Chat = string.Empty;
// UI-11: the main-window input buffer for which a plugin-disclosure
// warning was already shown. Mirrors _disclosureArmedBuffer in
// ChatInputBar — a second Enter on the same buffer sends it anyway.
private string? _disclosureArmedBufferMain;
// Input history extracted into InputHistoryService so pop-out windows share
// the same Up/Down history. Cursor stays window-local (independent navigation).
private int InputBacklogIdx = -1;
@@ -708,7 +716,13 @@ public sealed class ChatLogWindow : Window
// Window-Deckkraft eingestellt hat, hat dieses Per-Window-Override
// Vorrang über unseren Slider — wir dokumentieren das im HelpMarker.
if (LastViewport == ImGuiHelpers.MainViewport.Handle && !WasDocked)
BgAlpha = Plugin.Config.WindowOpacity;
{
// UI-12: focus-dependent opacity. PreOpenCheck runs before Begin();
// Window.IsFocused holds last frame's RootAndChildWindows focus, set
// by Dalamud's WindowHost after Begin(). One-frame latency is
// accepted.
BgAlpha = IsFocused ? Plugin.Config.WindowOpacity : Plugin.Config.WindowOpacityInactive;
}
LastViewport = ImGui.GetWindowViewport().Handle;
WasDocked = ImGui.IsWindowDocked();
@@ -776,6 +790,14 @@ public sealed class ChatLogWindow : Window
// (~17ms at 60fps) late, invisible inside the post-reload Atlas-Build.
private bool _firstFrameDone;
// Set when the user clicks the scroll-to-bottom button; the next
// frame's scroll-snap check forces a jump to the live end.
private bool _scrollToBottomRequested;
// Cached each frame inside the ##chat2-messages child. True when the
// user has scrolled up enough that the toolbar button should be shown.
private bool _childScrolledUp;
public override void Draw()
{
DrewThisFrame = true;
@@ -1064,6 +1086,10 @@ public sealed class ChatLogWindow : Window
{
Chat = chatCopy;
// UI-11: Escape cancels the input — drop any pending
// disclosure arming so the warning does not linger.
_disclosureArmedBufferMain = null;
if (activeTab.CurrentChannel.UseTempChannel)
{
activeTab.CurrentChannel.ResetTempChannel();
@@ -1073,17 +1099,46 @@ public sealed class ChatLogWindow : Window
if (ImGui.IsKeyDown(ImGuiKey.Enter) || ImGui.IsKeyDown(ImGuiKey.KeypadEnter))
{
Plugin.CommandHelpWindow.IsOpen = false;
SendChatBox(activeTab);
if (activeTab.CurrentChannel.UseTempChannel)
if (
Plugin.Config.NotifyPluginDisclosure
&& Chat != _disclosureArmedBufferMain
&& PluginDisclosureScanner.ContainsPrivateUseGlyph(Chat)
)
{
activeTab.CurrentChannel.ResetTempChannel();
SetChannel(activeTab.CurrentChannel.Channel);
// First send attempt on this exact buffer: arm and hold.
// The warning renders below the input.
_disclosureArmedBufferMain = Chat;
}
else
{
_disclosureArmedBufferMain = null;
Plugin.CommandHelpWindow.IsOpen = false;
SendChatBox(activeTab);
if (activeTab.CurrentChannel.UseTempChannel)
{
activeTab.CurrentChannel.ResetTempChannel();
SetChannel(activeTab.CurrentChannel.Channel);
}
}
}
}
// UI-11: disclosure warning for the main-window input, mirrors the
// ChatInputBar path. Visible only while the armed buffer is held
// unchanged; editing the buffer clears the condition.
if (
Plugin.Config.NotifyPluginDisclosure
&& _disclosureArmedBufferMain is not null
&& Chat == _disclosureArmedBufferMain
)
{
ImGui.TextColored(
ImGuiColors.DalamudYellow,
HellionStrings.ChatInput_PluginDisclosure_Warning
);
}
// Process keybinds that have modifiers while the chat is focused.
if (inputActive)
{
@@ -1114,6 +1169,38 @@ public sealed class ChatLogWindow : Window
using var pushedColor = ImRaii.PushColor(ImGuiCol.Text, normalColor);
if (ImGui.Selectable(Language.ChatLog_HideChat))
UserHide();
// Insert game text-macro tokens. The game expands <flag>/<item> at
// send time, so inserting literal token text is enough. Each entry is
// disabled when its precondition is unmet (no map flag, no linked item)
// so the inserted token cannot expand to nothing.
unsafe
{
// Null-check before deref: pointers can be null during zone transitions.
var agentMap = AgentMap.Instance();
var flagSet = agentMap != null && agentMap->FlagMarkerCount > 0;
using (ImRaii.Disabled(!flagSet))
{
if (ImGui.Selectable(HellionStrings.ChatLog_Insert_MapFlag))
{
Chat += "<flag>";
Activate = true;
ActivatePos = Chat.Length;
}
}
var agentChat = AgentChatLog.Instance();
var itemSet = agentChat != null && agentChat->LinkedItem.ItemId != 0;
using (ImRaii.Disabled(!itemSet))
{
if (ImGui.Selectable(HellionStrings.ChatLog_Insert_ItemLink))
{
Chat += "<item>";
Activate = true;
ActivatePos = Chat.Length;
}
}
}
}
}
}
@@ -1540,17 +1627,32 @@ public sealed class ChatLogWindow : Window
Tab tab,
PayloadHandler handler,
float childHeight,
bool switchedTab
bool switchedTab,
bool updateScrollState = true
)
{
using var child = ImRaii.Child("##chat2-messages", new Vector2(-1, childHeight));
if (!child.Success)
return;
using (var child = ImRaii.Child("##chat2-messages", new Vector2(-1, childHeight)))
{
if (child.Success)
{
if (tab.DisplayTimestamp && Plugin.Config.PrettierTimestamps)
DrawLogTableStyle(tab, handler, switchedTab);
else
DrawLogNormalStyle(tab, handler, switchedTab);
if (tab.DisplayTimestamp && Plugin.Config.PrettierTimestamps)
DrawLogTableStyle(tab, handler, switchedTab);
else
DrawLogNormalStyle(tab, handler, switchedTab);
// Cached for the header toolbar's scroll-to-bottom button, which is
// drawn one frame later. GetScrollMaxY / GetScrollY here refer to
// the child's scroll context. Pop-out windows pass updateScrollState:
// false so they do not overwrite the main window's cached state.
if (updateScrollState)
_childScrolledUp = ImGui.GetScrollMaxY() - ImGui.GetScrollY() > 1f;
}
else
{
if (updateScrollState)
_childScrolledUp = false;
}
}
}
private void DrawLogNormalStyle(Tab tab, PayloadHandler handler, bool switchedTab)
@@ -1558,8 +1660,9 @@ public sealed class ChatLogWindow : Window
using (ImRaii.PushStyle(ImGuiStyleVar.ItemSpacing, Vector2.Zero))
DrawMessages(tab, handler, false);
if (switchedTab || ImGui.GetScrollY() >= ImGui.GetScrollMaxY())
if (switchedTab || _scrollToBottomRequested || ImGui.GetScrollY() >= ImGui.GetScrollMaxY())
ImGui.SetScrollHereY(1f);
_scrollToBottomRequested = false;
handler.Draw();
}
@@ -1588,8 +1691,13 @@ public sealed class ChatLogWindow : Window
// Custom styles can have cellPadding that go above 4, which GetScrollY isn't respecting
var cellPaddingOffset =
!compact && oldCellPadding.Y > 4f ? oldCellPadding.Y - 4f : 0f;
if (switchedTab || ImGui.GetScrollY() + cellPaddingOffset >= ImGui.GetScrollMaxY())
if (
switchedTab
|| _scrollToBottomRequested
|| ImGui.GetScrollY() + cellPaddingOffset >= ImGui.GetScrollMaxY()
)
ImGui.SetScrollHereY(1f);
_scrollToBottomRequested = false;
handler.Draw();
}
@@ -2299,14 +2407,50 @@ public sealed class ChatLogWindow : Window
Plugin.WantedTab = null;
}
// DrawChatHeaderToolbar: renders the pop-out button for the active tab.
// v1.3.0 also renders the optional Honorific title slot left of it.
// DrawChatHeaderToolbar: renders the honorific title slot, the optional
// scroll-to-bottom button, and the pop-out button for the active tab.
private void DrawChatHeaderToolbar(Tab tab)
{
DrawHonorificTitleSlot();
DrawScrollToBottomToolbarButton();
DrawPopOutButton(tab);
}
// Draws an arrow-down button in the toolbar when the user has scrolled up
// from the live end of the chat log. Clicking it requests a snap to bottom.
//
// _childScrolledUp is set at the end of DrawMessageLog, which runs AFTER
// DrawChatHeaderToolbar in the same frame. So this button always reflects the
// previous frame's scroll state, a one-frame lag that is imperceptible in use.
//
// Both this button and DrawPopOutButton use SetCursorPosX with absolute
// positioning (cursorX + GetContentRegionAvail().X - N * iconWidth). Because
// each call computes its own target X from the right edge, they are independent
// of each other and of what the cursor position happens to be at call time.
// The pop-out button lands at rightEdge - iconWidth regardless of call order.
private void DrawScrollToBottomToolbarButton()
{
if (!_childScrolledUp)
return;
var avail = ImGui.GetContentRegionAvail().X;
var iconWidth = ImGui.GetFrameHeight();
var spacing = ImGui.GetStyle().ItemSpacing.X;
ImGui.SetCursorPosX(ImGui.GetCursorPosX() + avail - 2 * iconWidth - spacing);
if (
ImGuiUtil.IconButton(
FontAwesomeIcon.ArrowDown,
tooltip: HellionStrings.ChatLog_ScrollToBottom_Tooltip
)
)
_scrollToBottomRequested = true;
// Keep the pop-out button on the same toolbar row. Without this the
// button item ends the line and the pop-out drops to the next row.
ImGui.SameLine();
}
private void DrawPopOutButton(Tab tab)
{
var avail = ImGui.GetContentRegionAvail().X;
@@ -2358,7 +2502,13 @@ public sealed class ChatLogWindow : Window
crownWidth = ImGui.CalcTextSize(FontAwesomeIcon.Crown.ToIconString()).X;
}
var maxTitleWidth = avail - iconWidth - gapBeforeButton - crownWidth - gapAfterCrown;
// When the scroll button is also present it occupies iconWidth + ItemSpacing.X
// to the left of the pop-out button, so shrink the title budget accordingly.
var scrollButtonReserve = _childScrolledUp
? iconWidth + ImGui.GetStyle().ItemSpacing.X
: 0f;
var maxTitleWidth =
avail - iconWidth - scrollButtonReserve - gapBeforeButton - crownWidth - gapAfterCrown;
if (maxTitleWidth <= 0)
{
return;
@@ -2484,8 +2634,13 @@ public sealed class ChatLogWindow : Window
var anyChanged = false;
var tabs = Plugin.Config.Tabs;
// Focus the rename field on the frame the context menu opens so the
// user can type immediately. Buffer raised 128 -> 512 to match the
// settings-tab rename (Ui/SettingsTabs/Tabs.cs). One name limit, not two.
if (ImGui.IsWindowAppearing())
ImGui.SetKeyboardFocusHere();
ImGui.SetNextItemWidth(250f * ImGuiHelpers.GlobalScale);
if (ImGui.InputText("##tab-name", ref tab.Name, 128))
if (ImGui.InputText("##tab-name", ref tab.Name, 512))
anyChanged = true;
if (ImGuiUtil.IconButton(FontAwesomeIcon.TrashAlt, tooltip: Language.ChatLog_Tabs_Delete))
@@ -2926,6 +3081,14 @@ public sealed class ChatLogWindow : Window
float lineWidth = 0f
)
{
// UI-7: render a copy with the sender name reformatted per the user's
// display options. Skipped in screenshot mode so the name-anonymising
// path in DrawChunk stays reliable (privacy wins). ForDisplay returns
// the list unchanged when nothing applies, so non-sender lists and the
// neutral default cost only a quick scan.
if (!ScreenshotMode)
chunks = SenderNameDisplay.ForDisplay(chunks);
using var style = ImRaii.PushStyle(ImGuiStyleVar.ItemSpacing, Vector2.Zero);
for (var i = 0; i < chunks.Count; i++)
+37 -19
View File
@@ -1,6 +1,7 @@
using System.Globalization;
using System.Numerics;
using Dalamud.Bindings.ImGui;
using Dalamud.Interface.Utility;
using Dalamud.Interface.Utility.Raii;
using Dalamud.Interface.Windowing;
using HellionChat.Branding;
@@ -171,24 +172,41 @@ public sealed class FirstRunWizard : Window
ImGui.TextUnformatted(HellionStrings.Wizard_Step1_Title);
ImGui.Spacing();
// Banner is opt-in: the full silhouette dominates the wizard window
// at the default size, so the TreeNode is folded by default and the
// onboarding copy stays the primary focus. Mirrors the pre-rewrite
// collapsible anchor from v1.5.1.
using (var tree = ImRaii.TreeNode("Hellion Forge"))
// Fox-banner image: the embedded Hellion Forge fox artwork. The card
// behind the image gives the dark fox enough contrast against the
// plugin's dark UI so the logo reads clearly at a glance.
var banner = FoxBannerTexture.Shared.GetWrapOrDefault();
if (banner is not null)
{
if (tree.Success)
{
using (Plugin.Interface.UiBuilder.MonoFontHandle.Push())
{
// CalcTextSize must run inside the MonoFont push so the
// measurement matches the glyph width actually used for
// rendering.
var bannerSize = ImGui.CalcTextSize(HellionForgeAscii.FoxBanner);
ImGui.SetCursorPosX((ImGui.GetContentRegionAvail().X - bannerSize.X) * 0.5f);
ImGui.TextUnformatted(HellionForgeAscii.FoxBanner);
}
}
const uint CardColor = 0xFFE8E8E8; // off-white fill so the dark fox pops
var imgHeight = 170f * ImGuiHelpers.GlobalScale;
var imgWidth = imgHeight * banner.Size.X / banner.Size.Y;
var pad = 14f * ImGuiHelpers.GlobalScale;
var cardWidth = imgWidth + pad * 2f;
var cardHeight = imgHeight + pad * 2f;
var rounding = 8f * ImGuiHelpers.GlobalScale;
// Centre the card in the content region. Clamp to zero so the card
// never shifts left of the window edge on very narrow windows.
var offsetX = Math.Max(0f, (ImGui.GetContentRegionAvail().X - cardWidth) * 0.5f);
var cardOrigin = ImGui.GetCursorScreenPos() + new Vector2(offsetX, 0f);
// Draw the rounded card behind the image, then place the image on top.
ImGui
.GetWindowDrawList()
.AddRectFilled(
cardOrigin,
cardOrigin + new Vector2(cardWidth, cardHeight),
CardColor,
rounding
);
ImGui.SetCursorScreenPos(cardOrigin + new Vector2(pad, pad));
ImGui.Image(banner.Handle, new Vector2(imgWidth, imgHeight));
// Advance the layout cursor past the full card so the content below
// starts at the right position and does not overlap the card.
ImGui.SetCursorScreenPos(cardOrigin);
ImGui.Dummy(new Vector2(cardWidth, cardHeight));
}
ImGui.Spacing();
@@ -347,10 +365,10 @@ public sealed class FirstRunWizard : Window
if (ImGui.Checkbox(HellionStrings.Wizard_Step3_LoadPreviousSession_Label, ref loadPrev))
{
_state.PendingLoadPreviousSession = loadPrev;
// Mirror the DataManagement coupling: turning load-previous on
// Mirror the DataAndPrivacy coupling: turning load-previous on
// also turns filter-include on (otherwise old messages bypass
// the filter chain), and turning filter-include off forces
// load-previous off. Same idiom as Ui/SettingsTabs/DataManagement.cs:182-200.
// load-previous off. Same idiom as Ui/SettingsTabs/DataAndPrivacy.cs.
if (loadPrev)
_state.PendingFilterIncludePreviousSessions = true;
}
+1 -1
View File
@@ -118,7 +118,7 @@ internal class Popout : Window
var handler = ChatLogWindow.HandlerLender.Borrow();
var logHeight = ImGui.GetContentRegionAvail().Y - inputBarHeight - hintBannerHeight;
ChatLogWindow.DrawMessageLog(Tab, handler, logHeight, false);
ChatLogWindow.DrawMessageLog(Tab, handler, logHeight, false, updateScrollState: false);
if (inputEnabled && InputBar != null)
{
+13 -8
View File
@@ -24,6 +24,10 @@ public sealed class SettingsWindow : Dalamud.Interface.Windowing.Window
private List<ISettingsTab> Tabs { get; }
private int CurrentTab;
private SettingsView View = SettingsView.Overview;
// Set when a section is freshly entered; the first Draw afterwards reads it
// and clears it, so each section starts collapsed every time it is opened.
private bool _sectionJustEntered;
private readonly SettingsOverview Overview;
internal SettingsWindow(Plugin plugin, ILoggerFactory loggerFactory)
@@ -46,15 +50,12 @@ public sealed class SettingsWindow : Dalamud.Interface.Windowing.Window
Tabs =
[
new General(Plugin, Mutable),
new ThemeAndLayout(Plugin, Mutable, loggerFactory.CreateLogger<ThemeAndLayout>()),
new FontsAndColours(Plugin, Mutable, loggerFactory.CreateLogger<FontsAndColours>()),
new SettingsTabs.Window(Plugin, Mutable),
new Appearance(Plugin, Mutable, loggerFactory.CreateLogger<Appearance>()),
new Chat(Plugin, Mutable),
new SettingsTabs.Window(Plugin, Mutable),
new SettingsTabs.Tabs(Plugin, Mutable),
new SettingsTabs.Privacy(Plugin, Mutable),
new DataManagement(Plugin, Mutable, loggerFactory.CreateLogger<DataManagement>()),
new SettingsTabs.Integrations(Plugin, Mutable),
new Information(Mutable),
new DataAndPrivacy(Plugin, Mutable, loggerFactory.CreateLogger<DataAndPrivacy>()),
new About(Plugin, Mutable),
];
RespectCloseHotkey = false;
@@ -106,6 +107,7 @@ public sealed class SettingsWindow : Dalamud.Interface.Windowing.Window
{
CurrentTab = tabIndex;
View = SettingsView.Detail;
_sectionJustEntered = true;
}
internal void OpenOverview()
@@ -148,7 +150,10 @@ public sealed class SettingsWindow : Dalamud.Interface.Windowing.Window
using var child = ImRaii.Child("##chat2-settings-detail", new Vector2(-1, height));
if (child.Success)
Tabs[CurrentTab].Draw(false);
{
Tabs[CurrentTab].Draw(_sectionJustEntered);
_sectionJustEntered = false;
}
}
private void DrawSaveButtons()
+7 -22
View File
@@ -21,44 +21,29 @@ internal sealed class SettingsOverview
),
(
FontAwesomeIcon.Palette,
HellionStrings.Settings_Card_ThemeAndLayout_Title,
HellionStrings.Settings_Card_ThemeAndLayout_Subtext
),
(
FontAwesomeIcon.Font,
HellionStrings.Settings_Card_FontsAndColours_Title,
HellionStrings.Settings_Card_FontsAndColours_Subtext
),
(
FontAwesomeIcon.WindowMaximize,
HellionStrings.Settings_Card_Window_Title,
HellionStrings.Settings_Card_Window_Subtext
HellionStrings.Settings_Card_Appearance_Title,
HellionStrings.Settings_Card_Appearance_Subtext
),
(
FontAwesomeIcon.Comments,
HellionStrings.Settings_Card_Chat_Title,
HellionStrings.Settings_Card_Chat_Subtext
),
(
FontAwesomeIcon.WindowMaximize,
HellionStrings.Settings_Card_Window_Title,
HellionStrings.Settings_Card_Window_Subtext
),
(
FontAwesomeIcon.FolderTree,
HellionStrings.Settings_Card_Tabs_Title,
HellionStrings.Settings_Card_Tabs_Subtext
),
(
FontAwesomeIcon.ShieldAlt,
HellionStrings.Settings_Card_Privacy_Title,
HellionStrings.Settings_Card_Privacy_Subtext
),
(
FontAwesomeIcon.Database,
HellionStrings.Settings_Card_DataManagement_Title,
HellionStrings.Settings_Card_DataManagement_Subtext
),
(
FontAwesomeIcon.Plug,
HellionStrings.Settings_Card_Integrations_Title,
HellionStrings.Settings_Card_Integrations_Subtext
),
(
FontAwesomeIcon.InfoCircle,
HellionStrings.Settings_Card_Information_Title,
+493
View File
@@ -0,0 +1,493 @@
using System.Numerics;
using Dalamud.Bindings.ImGui;
using Dalamud.Interface;
using Dalamud.Interface.Colors;
using Dalamud.Interface.Utility;
using Dalamud.Interface.Utility.Raii;
using HellionChat.Branding;
using HellionChat.Integrations;
using HellionChat.Resources;
using HellionChat.Util;
namespace HellionChat.Ui.SettingsTabs;
// The About tab absorbs the former Integrations tab (now the first section)
// and organises its remaining content into four thematic sections.
internal sealed class About : ISettingsTab
{
private Plugin Plugin { get; }
private Configuration Mutable { get; }
public string Name => HellionStrings.Settings_Tab_Information + "###tabs-information";
private readonly List<string> Translators =
[
"q673135110",
"Akizem",
"d0tiKs",
"Moonlight_Everlit",
"Dark32",
"andreycout",
"Button_",
"Cali666",
"cassandra308",
"lokinmodar",
"jtabox",
"AkiraYorumoto",
"MKhayle",
"elena.space",
"imlisa",
"andrei5125",
"ShivaMaheshvara",
"aislinn87",
"nishinatsu051",
"lichuyuan",
"Risu64",
"yummypillow",
"witchymary",
"Yuzumi",
"zomsakura",
"Sirayuki",
];
internal About(Plugin plugin, Configuration mutable)
{
Plugin = plugin;
Mutable = mutable;
Translators.Sort(
(a, b) =>
string.Compare(a.ToLowerInvariant(), b.ToLowerInvariant(), StringComparison.Ordinal)
);
}
public void Draw(bool sectionJustEntered)
{
using var wrap = ImRaii.TextWrapPos(0.0f);
DrawExtensionsSection(sectionJustEntered);
ImGui.Spacing();
DrawPluginInfoSection(sectionJustEntered);
ImGui.Spacing();
DrawProjectSection(sectionJustEntered);
ImGui.Spacing();
DrawTranslatorsSection(sectionJustEntered);
ImGui.Spacing();
DrawChangelogSection(sectionJustEntered);
}
// ── Extensions ──────────────────────────────────────────────────────────
private void DrawExtensionsSection(bool sectionJustEntered)
{
if (sectionJustEntered)
ImGui.SetNextItemOpen(false);
using var tree = ImRaii.TreeNode(HellionStrings.Settings_Section_Extensions);
if (!tree.Success)
return;
using (ImRaii.PushIndent(ImGui.GetStyle().IndentSpacing, false))
{
ImGui.TextWrapped(HellionStrings.Settings_Integrations_Intro);
ImGui.Spacing();
ImGui.Spacing();
DrawHonorificSection();
ImGui.Spacing();
ImGui.Spacing();
DrawComingSoonSection();
ImGui.Spacing();
ImGui.Spacing();
DrawGotAnIdeaSection();
}
}
private void DrawHonorificSection()
{
DrawSectionHeader(HellionStrings.Settings_Integrations_Honorific_SectionHeader);
DrawHonorificStatus();
ImGui.Spacing();
// Toggle works regardless of detection state: "show when available,
// hide otherwise". Disabling it when Honorific is missing would force
// the user to retoggle on every reload.
if (
ImGui.Checkbox(
HellionStrings.Settings_Integrations_Honorific_Toggle,
ref Mutable.ShowHonorificTitleInHeader
)
)
{
Plugin.SaveConfig();
}
using (ImRaii.PushIndent())
{
using (
ImRaii.PushColor(
ImGuiCol.Text,
ColourUtil.RgbaToAbgr(Plugin.ThemeRegistry.Active.Colors.TextMuted)
)
)
{
ImGui.TextWrapped(HellionStrings.Settings_Integrations_Honorific_ToggleHint);
}
if (
ImGui.Checkbox(
HellionStrings.Settings_Integrations_Honorific_Glow_Toggle,
ref Mutable.ShowHonorificGlow
)
)
{
Plugin.SaveConfig();
}
ImGuiUtil.HelpMarker(HellionStrings.Settings_Integrations_Honorific_Glow_Hint);
}
// Honorific has no LICENSE in its repo so we link upstream and author
// instead of bundling assets. Text labels because FA Brands isn't
// guaranteed in Dalamud's font set.
ImGui.Spacing();
if (ImGui.Button(HellionStrings.Settings_Integrations_Honorific_LinkRepo))
{
Plugin.PlatformUtil.OpenLink(IntegrationLinks.HonorificRepo);
}
ImGui.SameLine();
if (ImGui.Button(HellionStrings.Settings_Integrations_Honorific_LinkAuthor))
{
Plugin.PlatformUtil.OpenLink(IntegrationLinks.HonorificAuthor);
}
}
private void DrawHonorificStatus()
{
var theme = Plugin.ThemeRegistry.Active;
var service = Plugin.HonorificService;
if (service.IsAvailable && service.DetectedApiVersion is { } version)
{
DrawStatusGlyph('●', theme.Colors.StatusSuccess);
ImGui.SameLine();
ImGui.TextUnformatted(
string.Format(
HellionStrings.Settings_Integrations_Honorific_Status_Detected,
version.Major,
version.Minor
)
);
}
else if (service.DetectedApiVersion is { } incompatibleVersion)
{
DrawStatusGlyph('⚠', theme.Colors.StatusWarning);
ImGui.SameLine();
ImGui.TextUnformatted(
string.Format(
HellionStrings.Settings_Integrations_Honorific_Status_Incompatible,
HonorificService.ExpectedApiMajor,
incompatibleVersion.Major,
incompatibleVersion.Minor
)
);
}
else
{
DrawStatusGlyph('○', theme.Colors.TextMuted);
ImGui.SameLine();
ImGui.TextUnformatted(
HellionStrings.Settings_Integrations_Honorific_Status_NotInstalled
);
}
}
private static void DrawStatusGlyph(char glyph, uint rgba)
{
using (ImRaii.PushColor(ImGuiCol.Text, ColourUtil.RgbaToAbgr(rgba)))
{
ImGui.TextUnformatted(glyph.ToString());
}
}
private void DrawComingSoonSection()
{
DrawSectionHeader(HellionStrings.Settings_Integrations_ComingSoon_SectionHeader);
ImGui.TextWrapped(HellionStrings.Settings_Integrations_ComingSoon_Intro);
ImGui.Spacing();
// Each integration cycle removes its stub here and adds a full section above.
DrawComingSoonItem(
HellionStrings.Settings_Integrations_ComingSoon_ContextMenu_Title,
HellionStrings.Settings_Integrations_ComingSoon_ContextMenu_Description
);
DrawComingSoonItem(
HellionStrings.Settings_Integrations_ComingSoon_Notifications_Title,
HellionStrings.Settings_Integrations_ComingSoon_Notifications_Description
);
DrawComingSoonItem(
HellionStrings.Settings_Integrations_ComingSoon_RPStatus_Title,
HellionStrings.Settings_Integrations_ComingSoon_RPStatus_Description
);
DrawComingSoonItem(
HellionStrings.Settings_Integrations_ComingSoon_ExtraChat_Title,
HellionStrings.Settings_Integrations_ComingSoon_ExtraChat_Description
);
DrawComingSoonItem(
HellionStrings.Settings_Integrations_ComingSoon_QuickDM_Title,
HellionStrings.Settings_Integrations_ComingSoon_QuickDM_Description
);
}
private void DrawComingSoonItem(string title, string description)
{
var theme = Plugin.ThemeRegistry.Active;
using (ImRaii.PushColor(ImGuiCol.Text, ColourUtil.RgbaToAbgr(theme.Colors.TextMuted)))
using (Plugin.FontManager.FontAwesome.Push())
{
ImGui.TextUnformatted(FontAwesomeIcon.Hourglass.ToIconString());
}
ImGui.SameLine();
ImGui.TextUnformatted(title);
using (ImRaii.PushIndent())
{
using (ImRaii.PushColor(ImGuiCol.Text, ColourUtil.RgbaToAbgr(theme.Colors.TextMuted)))
{
ImGui.TextWrapped(description);
}
}
ImGui.Spacing();
}
private void DrawGotAnIdeaSection()
{
DrawSectionHeader(HellionStrings.Settings_Integrations_GotAnIdea_SectionHeader);
ImGui.TextWrapped(HellionStrings.Settings_Integrations_GotAnIdea_Body);
ImGui.Spacing();
if (ImGui.Button(HellionStrings.Settings_Integrations_GotAnIdea_LinkLabel))
{
Plugin.PlatformUtil.OpenLink(BrandingLinks.HellionForgeDiscordInvite);
}
}
private void DrawSectionHeader(string label)
{
var theme = Plugin.ThemeRegistry.Active;
using (ImRaii.PushColor(ImGuiCol.Text, ColourUtil.RgbaToAbgr(theme.Colors.Primary)))
{
ImGui.TextUnformatted("── " + label + " ──");
}
}
// ── Plugin info ──────────────────────────────────────────────────────────
private void DrawPluginInfoSection(bool sectionJustEntered)
{
if (sectionJustEntered)
ImGui.SetNextItemOpen(false);
using var tree = ImRaii.TreeNode(HellionStrings.Settings_Section_PluginInfo);
if (!tree.Success)
return;
using (ImRaii.PushIndent(ImGui.GetStyle().IndentSpacing, false))
{
DrawFoxBanner();
ImGuiHelpers.ScaledDummy(6.0f);
ImGui.TextUnformatted(string.Format(Language.Options_About_Opening, Plugin.PluginName));
ImGuiHelpers.ScaledDummy(10.0f);
ImGui.TextUnformatted(Language.Options_About_Authors);
ImGui.SameLine();
ImGui.TextColored(ImGuiColors.ParsedGold, Plugin.Interface.Manifest.Author);
ImGui.TextUnformatted(Language.Options_About_Discord);
ImGui.SameLine();
ImGui.TextColored(ImGuiColors.ParsedGold, "@j.j_kazama");
ImGui.TextUnformatted(Language.Options_About_Version);
ImGui.SameLine();
ImGui.TextColored(
ImGuiColors.ParsedOrange,
Plugin.Interface.Manifest.AssemblyVersion.ToString(3)
);
ImGuiHelpers.ScaledDummy(10.0f);
ImGui.TextUnformatted(Language.Options_About_Github_Issues);
ImGui.SameLine();
if (ImGuiUtil.IconButton(FontAwesomeIcon.ExternalLinkAlt, "githubIssues"))
Plugin.PlatformUtil.OpenLink(
"https://gitea.hellion-forge.cloud/JonKazama-Hellion/HellionChat/issues"
);
}
}
private void DrawFoxBanner()
{
var banner = FoxBannerTexture.Shared.GetWrapOrDefault();
if (banner is null)
return;
const uint CardColor = 0xFFE8E8E8; // off-white fill so the dark fox pops
var imgHeight = 170f * ImGuiHelpers.GlobalScale;
var imgWidth = imgHeight * banner.Size.X / banner.Size.Y;
var pad = 14f * ImGuiHelpers.GlobalScale;
var cardWidth = imgWidth + pad * 2f;
var cardHeight = imgHeight + pad * 2f;
var rounding = 8f * ImGuiHelpers.GlobalScale;
// Left-aligned: card origin stays at the current layout cursor position.
var cardOrigin = ImGui.GetCursorScreenPos();
// Draw the rounded card behind the image, then place the image on top.
ImGui
.GetWindowDrawList()
.AddRectFilled(
cardOrigin,
cardOrigin + new Vector2(cardWidth, cardHeight),
CardColor,
rounding
);
ImGui.SetCursorScreenPos(cardOrigin + new Vector2(pad, pad));
ImGui.Image(banner.Handle, new Vector2(imgWidth, imgHeight));
// Advance the layout cursor past the full card so content below does not overlap.
ImGui.SetCursorScreenPos(cardOrigin);
ImGui.Dummy(new Vector2(cardWidth, cardHeight));
}
// ── The Project ──────────────────────────────────────────────────────────
private void DrawProjectSection(bool sectionJustEntered)
{
if (sectionJustEntered)
ImGui.SetNextItemOpen(false);
using var tree = ImRaii.TreeNode(HellionStrings.Settings_Section_Project);
if (!tree.Success)
return;
using (ImRaii.PushIndent(ImGui.GetStyle().IndentSpacing, false))
{
ImGui.TextColored(ImGuiColors.ParsedGold, HellionStrings.About_Maintainer_Heading);
ImGui.TextUnformatted(HellionStrings.About_Maintainer_Body);
ImGui.TextUnformatted(HellionStrings.About_Maintainer_Website_Label);
ImGui.SameLine();
if (ImGuiUtil.IconButton(FontAwesomeIcon.ExternalLinkAlt, "hellionMedia"))
Plugin.PlatformUtil.OpenLink("https://hellion-media.de");
ImGuiHelpers.ScaledDummy(10.0f);
ImGui.TextColored(ImGuiColors.ParsedGold, HellionStrings.About_Mission_Heading);
ImGui.TextUnformatted(HellionStrings.About_Mission_P1);
ImGui.Spacing();
ImGui.TextUnformatted(HellionStrings.About_Mission_P2);
ImGui.Spacing();
ImGui.TextUnformatted(HellionStrings.About_Mission_P3);
ImGuiHelpers.ScaledDummy(10.0f);
ImGui.TextColored(ImGuiColors.ParsedGold, HellionStrings.About_BuiltOn_Heading);
ImGui.TextUnformatted(HellionStrings.About_BuiltOn_P1);
ImGui.Spacing();
ImGui.TextUnformatted(HellionStrings.About_BuiltOn_P2);
ImGui.Spacing();
ImGui.TextUnformatted(HellionStrings.About_BuiltOn_Upstream_Label);
ImGui.SameLine();
if (ImGuiUtil.IconButton(FontAwesomeIcon.ExternalLinkAlt, "chatTwoUpstream"))
Plugin.PlatformUtil.OpenLink("https://github.com/Infiziert90/ChatTwo");
ImGuiHelpers.ScaledDummy(10.0f);
ImGui.TextColored(ImGuiColors.ParsedGold, HellionStrings.About_License_Heading);
ImGui.TextUnformatted(HellionStrings.About_License_P1);
ImGui.TextUnformatted(HellionStrings.About_License_P2);
ImGui.TextUnformatted(HellionStrings.About_License_P3);
ImGuiHelpers.ScaledDummy(10.0f);
ImGui.TextColored(ImGuiColors.DalamudOrange, HellionStrings.About_SE_Heading);
ImGui.TextUnformatted(HellionStrings.About_SE_P1);
ImGui.TextUnformatted(HellionStrings.About_SE_P2);
ImGui.Spacing();
ImGui.TextColored(ImGuiColors.ParsedGold, HellionStrings.About_Localization_Heading);
ImGui.TextUnformatted(HellionStrings.About_Localization_P1);
ImGui.TextUnformatted(HellionStrings.About_Localization_P2);
}
}
// ── Translators ──────────────────────────────────────────────────────────
private void DrawTranslatorsSection(bool sectionJustEntered)
{
if (sectionJustEntered)
ImGui.SetNextItemOpen(false);
using var tree = ImRaii.TreeNode(HellionStrings.Settings_Section_Translators);
if (!tree.Success)
return;
using (ImRaii.PushIndent(ImGui.GetStyle().IndentSpacing, false))
{
// The translator list belongs to the Chat 2 upstream Crowdin project.
using var translatorTree = ImRaii.TreeNode(HellionStrings.About_Translators_TreeNode);
if (translatorTree)
{
using var indent = ImRaii.PushIndent(ImGui.GetStyle().IndentSpacing, false);
foreach (var translator in Translators)
ImGui.TextUnformatted(translator);
}
}
}
// ── Changelog ────────────────────────────────────────────────────────────
private void DrawChangelogSection(bool sectionJustEntered)
{
if (sectionJustEntered)
ImGui.SetNextItemOpen(false);
using var tree = ImRaii.TreeNode(HellionStrings.Settings_Section_Changelog);
if (!tree.Success)
return;
using (ImRaii.PushIndent(ImGui.GetStyle().IndentSpacing, false))
{
ImGui.Checkbox(Language.Options_PrintChangelog_Name, ref Mutable.PrintChangelog);
ImGuiUtil.HelpMarker(Language.Options_PrintChangelog_Description);
ImGui.Spacing();
ImGui.Separator();
ImGui.Spacing();
var changelog = Plugin.Interface.Manifest.Changelog;
if (changelog == null)
return;
ImGui.TextUnformatted(Language.Options_Changelog_Header);
ImGui.TextUnformatted(
$"Version {Plugin.Interface.Manifest.AssemblyVersion.ToString(3)}"
);
ImGui.Spacing();
foreach (var sentence in changelog.Split("\n"))
{
if (sentence == string.Empty)
{
ImGui.NewLine();
continue;
}
var indented = sentence.StartsWith('-') || sentence.StartsWith(" -");
using var indent = ImRaii.PushIndent(10.0f, true, indented);
ImGui.TextUnformatted(sentence);
}
}
}
}
+695
View File
@@ -0,0 +1,695 @@
using System.Numerics;
using Dalamud;
using Dalamud.Bindings.ImGui;
using Dalamud.Interface;
using Dalamud.Interface.FontIdentifier;
using Dalamud.Interface.Utility;
using Dalamud.Interface.Utility.Raii;
using HellionChat.Code;
using HellionChat.Resources;
using HellionChat.Themes;
using HellionChat.Util;
using Microsoft.Extensions.Logging;
namespace HellionChat.Ui.SettingsTabs;
internal sealed class Appearance : ISettingsTab
{
private Plugin Plugin { get; }
private Configuration Mutable { get; }
private readonly ILogger<Appearance> _logger;
private string? _applyDismissedFor;
public string Name => HellionStrings.Settings_Tab_Appearance + "###tabs-appearance";
internal Appearance(Plugin plugin, Configuration mutable, ILogger<Appearance> logger)
{
Plugin = plugin;
Mutable = mutable;
_logger = logger;
}
public void Draw(bool sectionJustEntered)
{
DrawThemeSection(sectionJustEntered);
ImGui.Spacing();
DrawFontsSection(sectionJustEntered);
ImGui.Spacing();
DrawColoursSection(sectionJustEntered);
ImGui.Spacing();
DrawWindowStyleSection(sectionJustEntered);
ImGui.Spacing();
DrawTimestampSection(sectionJustEntered);
ImGui.Spacing();
DrawAnimationsSection(sectionJustEntered);
}
// ── Theme ──────────────────────────────────────────────────────────────
private void DrawThemeSection(bool sectionJustEntered)
{
if (sectionJustEntered)
ImGui.SetNextItemOpen(false);
using var tree = ImRaii.TreeNode(HellionStrings.Settings_Section_Theme);
if (!tree.Success)
return;
using (ImRaii.PushIndent(ImGui.GetStyle().IndentSpacing, false))
{
var registry = Plugin.ThemeRegistry;
var active = registry.Get(Mutable.Theme);
ImGui.TextUnformatted(
string.Format(HellionStrings.Settings_Themes_Active, active.Name)
);
using (ImRaii.PushColor(ImGuiCol.Text, 0xFF8FA3B5u))
ImGui.TextUnformatted(active.Author);
DrawChatColorsApplyBanner(active);
ImGui.Spacing();
ImGui.Separator();
ImGui.Spacing();
ImGui.TextUnformatted(HellionStrings.Settings_Themes_BuiltIns);
ImGui.Spacing();
DrawThemeGrid(registry.AllBuiltIns(), active.Slug);
var customs = registry.AllCustom().ToList();
if (customs.Count > 0)
{
ImGui.Spacing();
ImGui.Separator();
ImGui.Spacing();
ImGui.TextUnformatted(HellionStrings.Settings_Themes_Custom);
ImGui.Spacing();
DrawThemeGrid(customs, active.Slug);
}
ImGui.Spacing();
ImGui.Separator();
ImGui.Spacing();
if (ImGui.Button(HellionStrings.Settings_Themes_OpenFolder))
{
var dir = Path.Combine(Plugin.Interface.ConfigDirectory.FullName, "themes");
Directory.CreateDirectory(dir);
Plugin.PlatformUtil.OpenLink(dir);
}
ImGui.SameLine();
if (ImGui.Button(HellionStrings.Settings_Themes_ExportActive))
{
var dir = Path.Combine(Plugin.Interface.ConfigDirectory.FullName, "themes");
Directory.CreateDirectory(dir);
var fileName = $"{active.Slug}.export.json";
var path = Path.Combine(dir, fileName);
var json = ThemeJsonWriter.Serialize(active);
File.WriteAllText(path, json);
_logger.LogInformation($"Exported active theme '{active.Slug}' to {path}");
}
}
}
private void DrawThemeGrid(IEnumerable<Theme> themes, string activeSlug)
{
var avail = ImGui.GetContentRegionAvail();
var columns = avail.X >= 700f ? 3 : 2;
var cardWidth = (avail.X - (columns - 1) * 8f) / columns;
var cardHeight = 140f;
var list = themes.ToList();
for (var i = 0; i < list.Count; i++)
{
DrawThemeCard(list[i], activeSlug, cardWidth, cardHeight);
if ((i + 1) % columns != 0 && i != list.Count - 1)
ImGui.SameLine();
}
}
private void DrawThemeCard(Theme theme, string activeSlug, float w, float h)
{
ImGui.BeginGroup();
var isActive = string.Equals(theme.Slug, activeSlug, StringComparison.OrdinalIgnoreCase);
var cursorBefore = ImGui.GetCursorScreenPos();
var clicked = ImGui.InvisibleButton($"##theme-card-{theme.Slug}", new Vector2(w, h));
var hovered = ImGui.IsItemHovered();
var draw = ImGui.GetWindowDrawList();
var bg = ColourUtil.RgbaToAbgr(theme.Colors.WindowBg | 0xFFu);
draw.AddRectFilled(cursorBefore, cursorBefore + new Vector2(w, h), bg, 4f);
if (isActive)
{
var border = ColourUtil.RgbaToAbgr(theme.Colors.Primary);
draw.AddRect(
cursorBefore,
cursorBefore + new Vector2(w, h),
border,
4f,
ImDrawFlags.None,
2f
);
}
else if (hovered)
{
var border = ColourUtil.RgbaToAbgr(theme.Colors.PrimaryLight & 0xFFFFFF99u);
draw.AddRect(
cursorBefore,
cursorBefore + new Vector2(w, h),
border,
4f,
ImDrawFlags.None,
1f
);
}
var mockupOrigin = cursorBefore + new Vector2(12f, 12f);
var mockupSize = new Vector2(w - 24f, 60f);
ThemeMockup.Draw(mockupOrigin, mockupSize, theme);
var textColor = ColourUtil.RgbaToAbgr(theme.Colors.TextPrimary);
var mutedColor = ColourUtil.RgbaToAbgr(theme.Colors.TextMuted);
draw.AddText(cursorBefore + new Vector2(12f, 80f), textColor, theme.Name);
draw.AddText(cursorBefore + new Vector2(12f, 100f), mutedColor, theme.Author);
ImGui.EndGroup();
if (clicked)
{
Mutable.Theme = theme.Slug;
Plugin.ThemeRegistry.Switch(theme.Slug);
_applyDismissedFor = null;
}
}
private void DrawChatColorsApplyBanner(Theme active)
{
if (active.ChatColors is not { Channels.Count: > 0 } themeChatColors)
return;
if (_applyDismissedFor == active.Slug)
return;
var alreadyMatching = themeChatColors.Channels.All(kvp =>
Mutable.ChatColours.TryGetValue(kvp.Key, out var current) && current == kvp.Value
);
if (alreadyMatching)
return;
ImGui.Spacing();
var border = ColourUtil.RgbaToAbgr(active.Colors.Primary);
var bgFill = ColourUtil.RgbaToAbgr((active.Colors.Surface & 0xFFFFFF00u) | 0xCCu);
var origin = ImGui.GetCursorScreenPos();
var width = ImGui.GetContentRegionAvail().X;
var height = 64f;
var draw = ImGui.GetWindowDrawList();
draw.AddRectFilled(origin, origin + new Vector2(width, height), bgFill, 4f);
draw.AddRect(origin, origin + new Vector2(width, height), border, 4f, ImDrawFlags.None, 1f);
var textColor = ColourUtil.RgbaToAbgr(active.Colors.TextPrimary);
draw.AddText(
origin + new Vector2(12f, 10f),
textColor,
HellionStrings.Settings_Themes_ApplyChatColors_Hint
);
using (ImRaii.PushColor(ImGuiCol.Button, active.Colors.Primary))
using (ImRaii.PushColor(ImGuiCol.ButtonHovered, active.Colors.PrimaryLight))
using (ImRaii.PushColor(ImGuiCol.ButtonActive, active.Colors.PrimaryDark))
{
ImGui.SetCursorScreenPos(origin + new Vector2(12f, 32f));
if (ImGui.Button(HellionStrings.Settings_Themes_ApplyChatColors_Apply))
{
foreach (var kvp in themeChatColors.Channels)
Mutable.ChatColours[kvp.Key] = kvp.Value;
_applyDismissedFor = active.Slug;
}
}
ImGui.SameLine();
if (ImGui.Button(HellionStrings.Settings_Themes_ApplyChatColors_Keep))
{
_applyDismissedFor = active.Slug;
}
ImGui.SetCursorScreenPos(origin + new Vector2(0f, height + 8f));
ImGui.Spacing();
}
// ── Fonts ──────────────────────────────────────────────────────────────
// R3 deliberately NOT applied here — the UseHellionFont/FontsEnabled
// visibility chain has priority over type grouping (R4).
private void DrawFontsSection(bool sectionJustEntered)
{
if (sectionJustEntered)
ImGui.SetNextItemOpen(false);
using var tree = ImRaii.TreeNode(HellionStrings.Settings_Section_Fonts);
if (!tree.Success)
return;
using (ImRaii.PushIndent(ImGui.GetStyle().IndentSpacing, false))
{
if (
ImGui.Checkbox(HellionStrings.Theme_UseHellionFont_Name, ref Mutable.UseHellionFont)
)
{
if (Mutable.UseHellionFont)
Mutable.FontsEnabled = false;
}
ImGuiUtil.HelpMarker(HellionStrings.Theme_UseHellionFont_Description);
ImGui.Spacing();
if (Mutable.UseHellionFont)
{
// Bundled-font path: only the base font size matters; the
// global / japanese / italic chooser pickers do not apply.
ImGuiUtil.FontSizeCombo(Language.Options_FontSize_Name, ref Mutable.FontSizeV2);
ImGui.Spacing();
}
else
{
ImGui.Checkbox(Language.Options_FontsEnabled, ref Mutable.FontsEnabled);
ImGui.Spacing();
}
var unused = false;
if (!Mutable.UseHellionFont && !Mutable.FontsEnabled)
{
ImGuiUtil.FontSizeCombo(Language.Options_FontSize_Name, ref Mutable.FontSizeV2);
}
else if (!Mutable.UseHellionFont)
{
var globalChooser = ImGuiUtil.FontChooser(
Language.Options_Font_Name,
Mutable.GlobalFontV2,
false,
ref unused
);
globalChooser?.ResultTask.ContinueWith(r =>
{
if (r.IsCompletedSuccessfully)
{
Plugin.Framework.Run(() => Mutable.GlobalFontV2 = r.Result);
}
});
ImGui.SameLine();
if (ImGui.Button("Reset##global"))
{
Mutable.GlobalFontV2 = new SingleFontSpec
{
FontId = new DalamudAssetFontAndFamilyId(DalamudAsset.NotoSansCjkRegular),
SizePt = 12.75f,
};
}
ImGuiUtil.HelpMarker(
string.Format(Language.Options_Font_Description, Plugin.PluginName)
);
ImGuiUtil.WarningText(Language.Options_Font_Warning);
ImGui.Spacing();
var japaneseChooser = ImGuiUtil.FontChooser(
Language.Options_JapaneseFont_Name,
Mutable.JapaneseFontV2,
false,
ref unused,
id => !id.LocaleNames?.ContainsKey("ja-jp") ?? false,
"いろはにほへと ちりぬるを"
);
japaneseChooser?.ResultTask.ContinueWith(r =>
{
if (r.IsCompletedSuccessfully)
{
Plugin.Framework.Run(() => Mutable.JapaneseFontV2 = r.Result);
}
});
ImGui.SameLine();
if (ImGui.Button("Reset##japanese"))
{
Mutable.JapaneseFontV2 = new SingleFontSpec
{
FontId = new DalamudAssetFontAndFamilyId(DalamudAsset.NotoSansCjkMedium),
SizePt = 12.75f,
};
}
ImGuiUtil.HelpMarker(
string.Format(Language.Options_JapaneseFont_Description, Plugin.PluginName)
);
ImGui.Spacing();
var italicChooser = ImGuiUtil.FontChooser(
Language.Options_ItalicFont_Name,
Mutable.ItalicFontV2,
true,
ref Mutable.ItalicEnabled
);
italicChooser?.ResultTask.ContinueWith(r =>
{
if (r.IsCompletedSuccessfully)
{
Plugin.Framework.Run(() => Mutable.ItalicFontV2 = r.Result);
}
});
ImGui.SameLine();
if (ImGui.Button("Reset##italic"))
{
Mutable.ItalicEnabled = false;
Mutable.ItalicFontV2 = new SingleFontSpec
{
FontId = new DalamudAssetFontAndFamilyId(DalamudAsset.NotoSansCjkRegular),
SizePt = 12.75f,
};
}
ImGuiUtil.HelpMarker(
string.Format(Language.Options_Italic_Description, Plugin.PluginName)
);
ImGui.Spacing();
}
// v1.5.3: ExtraGlyphRanges is an atlas-wide property and stays
// reachable regardless of UseHellionFont / FontsEnabled state so
// users can verify or override the auto-activation on language change.
ImGui.Spacing();
if (ImGui.CollapsingHeader(Language.Options_ExtraGlyphs_Name))
{
ImGuiUtil.HelpMarker(
string.Format(Language.Options_ExtraGlyphs_Description, Plugin.PluginName)
);
var range = (int)Mutable.ExtraGlyphRanges;
foreach (var extra in Enum.GetValues<ExtraGlyphRanges>())
{
ImGui.CheckboxFlags(extra.Name(), ref range, (int)extra);
}
Mutable.ExtraGlyphRanges = (ExtraGlyphRanges)range;
}
ImGuiUtil.FontSizeCombo(
Language.Options_SymbolsFontSize_Name,
ref Mutable.SymbolsFontSizeV2
);
ImGuiUtil.HelpMarker(Language.Options_SymbolsFontSize_Description);
ImGui.Spacing();
}
}
// ── Colours ────────────────────────────────────────────────────────────
private void DrawColoursSection(bool sectionJustEntered)
{
if (sectionJustEntered)
ImGui.SetNextItemOpen(false);
using var tree = ImRaii.TreeNode(HellionStrings.Settings_Section_Colours);
if (!tree.Success)
return;
using (ImRaii.PushIndent(ImGui.GetStyle().IndentSpacing, false))
{
DrawColourPresetButtons();
ImGui.TextDisabled(HellionStrings.Settings_Appearance_Colours_PresetsHint);
ImGui.Spacing();
ImGui.Separator();
ImGui.Spacing();
ImGui.Checkbox(
Language.Options_ColorSelectedInputChannelButton_Name,
ref Mutable.ColorSelectedInputChannelButton
);
ImGuiUtil.HelpMarker(Language.Options_ColorSelectedInputChannelButton_Description);
ImGui.Spacing();
foreach (var (_, types) in ChatTypeExt.SortOrder)
{
foreach (var type in types)
{
if (
ImGuiUtil.IconButton(
FontAwesomeIcon.UndoAlt,
$"{type}",
Language.Options_ChatColours_Reset
)
)
{
Mutable.ChatColours.Remove(type);
}
ImGui.SameLine();
if (
ImGuiUtil.IconButton(
FontAwesomeIcon.LongArrowAltDown,
$"{type}",
Language.Options_ChatColours_Import
)
)
{
var gameColour = Plugin.Functions.Chat.GetChannelColor(type);
Mutable.ChatColours[type] = gameColour ?? type.DefaultColor() ?? 0;
}
ImGui.SameLine();
var vec = Mutable.ChatColours.TryGetValue(type, out var colour)
? ColourUtil.RgbaToVector3(colour)
: ColourUtil.RgbaToVector3(type.DefaultColor() ?? 0);
if (ImGui.ColorEdit3(type.Name(), ref vec, ImGuiColorEditFlags.NoInputs))
{
Mutable.ChatColours[type] = ColourUtil.Vector3ToRgba(vec);
}
}
}
ImGui.Spacing();
}
}
private void DrawColourPresetButtons()
{
var first = true;
foreach (var (_, preset) in ChatColourPresets.All)
{
if (!first)
{
ImGui.SameLine();
}
first = false;
if (preset.IsBrandPreset)
{
var border = ColourUtil.RgbaToVector3(ColourUtil.ComponentsToRgba(255, 128, 200));
var btn = ColourUtil.RgbaToVector3(ColourUtil.ComponentsToRgba(74, 42, 106));
ImGui.PushStyleColor(
ImGuiCol.Border,
new System.Numerics.Vector4(border.X, border.Y, border.Z, 1f)
);
ImGui.PushStyleColor(
ImGuiCol.Button,
new System.Numerics.Vector4(btn.X, btn.Y, btn.Z, 1f)
);
ImGui.PushStyleVar(ImGuiStyleVar.FrameBorderSize, 1.5f);
}
if (ImGui.Button(GetPresetLabel(preset)))
{
ApplyPreset(preset);
}
if (preset.IsBrandPreset)
{
ImGui.PopStyleVar();
ImGui.PopStyleColor(2);
}
}
}
private static string GetPresetLabel(ChatColourPreset preset)
{
var localized = HellionStrings.ResourceManager.GetString(
preset.LocalizationKey,
HellionStrings.Culture
);
return string.IsNullOrEmpty(localized) ? preset.DisplayName : localized;
}
private void ApplyPreset(ChatColourPreset preset)
{
foreach (var (channel, colour) in preset.Colours)
{
Mutable.ChatColours[channel] = colour;
}
Plugin.SaveConfig();
GlobalParametersCache.Refresh();
_logger.LogDebug($"Applied chat colour preset: {preset.DisplayName}");
}
// ── Window style ───────────────────────────────────────────────────────
private void DrawWindowStyleSection(bool sectionJustEntered)
{
if (sectionJustEntered)
ImGui.SetNextItemOpen(false);
using var tree = ImRaii.TreeNode(HellionStrings.Settings_Section_WindowStyle);
if (!tree.Success)
return;
using (ImRaii.PushIndent(ImGui.GetStyle().IndentSpacing, false))
{
ImGui.Checkbox(Language.Options_ShowTitleBar_Name, ref Mutable.ShowTitleBar);
ImGui.Checkbox(
Language.Options_ShowPopOutTitleBar_Name,
ref Mutable.ShowPopOutTitleBar
);
ImGui.Checkbox(Language.Options_ShowHideButton_Name, ref Mutable.ShowHideButton);
ImGuiUtil.HelpMarker(Language.Options_ShowHideButton_Description);
ImGui.Checkbox(Language.Options_SidebarTabView_Name, ref Mutable.SidebarTabView);
ImGuiUtil.HelpMarker(
string.Format(Language.Options_SidebarTabView_Description, Plugin.PluginName)
);
if (Mutable.SidebarTabView)
{
var sidebarWidth = Mutable.SidebarWidth;
if (
ImGui.SliderInt(
HellionStrings.Settings_ThemeAndLayout_SidebarWidth_Name,
ref sidebarWidth,
44,
160,
$"{sidebarWidth} px"
)
)
{
Mutable.SidebarWidth = sidebarWidth;
}
ImGuiUtil.HelpMarker(
HellionStrings.Settings_ThemeAndLayout_SidebarWidth_Description
);
}
ImGui.Spacing();
ImGui.Separator();
ImGui.Spacing();
// Slider range 50-100% maps to 0.5-1.0 internally. Floor at 50% prevents
// accidentally hiding the chat background (v1.2.0 bug at WindowAlpha=0).
var opacityPercent = Mutable.WindowOpacity * 100f;
if (
ImGuiUtil.DragFloatVertical(
HellionStrings.Settings_ThemeAndLayout_WindowOpacity_Name,
ref opacityPercent,
.25f,
50f,
100f,
$"{opacityPercent:N0}%%",
ImGuiSliderFlags.AlwaysClamp
)
)
{
Mutable.WindowOpacity = opacityPercent / 100f;
}
ImGuiUtil.HelpMarker(HellionStrings.Settings_ThemeAndLayout_WindowOpacity_Description);
// UI-12: inactive-window opacity, same 50-100% range and clamp.
var inactiveOpacityPercent = Mutable.WindowOpacityInactive * 100f;
if (
ImGuiUtil.DragFloatVertical(
HellionStrings.Settings_ThemeAndLayout_WindowOpacityInactive_Name,
ref inactiveOpacityPercent,
.25f,
50f,
100f,
$"{inactiveOpacityPercent:N0}%%",
ImGuiSliderFlags.AlwaysClamp
)
)
{
Mutable.WindowOpacityInactive = inactiveOpacityPercent / 100f;
}
ImGuiUtil.HelpMarker(
HellionStrings.Settings_ThemeAndLayout_WindowOpacityInactive_Description
);
}
}
// ── Timestamps ─────────────────────────────────────────────────────────
private void DrawTimestampSection(bool sectionJustEntered)
{
if (sectionJustEntered)
ImGui.SetNextItemOpen(false);
using var tree = ImRaii.TreeNode(HellionStrings.Settings_Section_Timestamps);
if (!tree.Success)
return;
using (ImRaii.PushIndent(ImGui.GetStyle().IndentSpacing, false))
{
ImGui.Checkbox(
Language.Options_PrettierTimestamps_Name,
ref Mutable.PrettierTimestamps
);
ImGuiUtil.HelpMarker(Language.Options_PrettierTimestamps_Description);
if (Mutable.PrettierTimestamps)
{
ImGui.Checkbox(
Language.Options_MoreCompactPretty_Name,
ref Mutable.MoreCompactPretty
);
ImGuiUtil.HelpMarker(Language.Options_MoreCompactPretty_Description);
ImGui.Checkbox(
HellionStrings.Appearance_UseCompactDensity_Name,
ref Mutable.UseCompactDensity
);
ImGuiUtil.HelpMarker(HellionStrings.Appearance_UseCompactDensity_Description);
ImGui.Checkbox(
Language.Options_HideSameTimestamps_Name,
ref Mutable.HideSameTimestamps
);
ImGuiUtil.HelpMarker(Language.Options_HideSameTimestamps_Description);
}
ImGui.Checkbox(Language.Options_Use24HourClock_Name, ref Mutable.Use24HourClock);
ImGuiUtil.HelpMarker(Language.Options_Use24HourClock_Description);
}
}
// ── Animations ─────────────────────────────────────────────────────────
private void DrawAnimationsSection(bool sectionJustEntered)
{
if (sectionJustEntered)
ImGui.SetNextItemOpen(false);
using var tree = ImRaii.TreeNode(HellionStrings.Settings_Section_Animations);
if (!tree.Success)
return;
using (ImRaii.PushIndent(ImGui.GetStyle().IndentSpacing, false))
{
// Master accessibility toggle for the v1.5.4 motion work: the
// theme crossfade, the sidebar/card hover lerps and the
// unread-tab pulse all read Config.ReduceMotion and snap
// instantly when it is on.
ImGui.Checkbox(
HellionStrings.Settings_ThemeAndLayout_ReduceMotion_Name,
ref Mutable.ReduceMotion
);
ImGuiUtil.HelpMarker(HellionStrings.Settings_ThemeAndLayout_ReduceMotion_Description);
}
}
}
+209 -87
View File
@@ -9,7 +9,7 @@ using HellionChat.Util;
namespace HellionChat.Ui.SettingsTabs;
// Four sections: Auto-Tell Tabs, Behaviour, Preview, Emotes.
// Six sections: Messages, Input & preview, Auto-tell tabs, Emotes, Links & tooltips, Novice network.
internal sealed class Chat : ISettingsTab
{
private Plugin Plugin { get; }
@@ -40,37 +40,168 @@ internal sealed class Chat : ISettingsTab
.ToArray(),
};
public void Draw(bool changed)
public void Draw(bool sectionJustEntered)
{
DrawAutoTellTabsSection();
DrawMessagesSection(sectionJustEntered);
ImGui.Spacing();
DrawBehaviourSection();
DrawInputPreviewSection(sectionJustEntered);
ImGui.Spacing();
DrawPreviewSection();
DrawAutoTellTabsSection(sectionJustEntered);
ImGui.Spacing();
DrawEmotesSection();
DrawEmotesSection(sectionJustEntered);
ImGui.Spacing();
DrawLinksTooltipsSection(sectionJustEntered);
ImGui.Spacing();
DrawNoviceNetworkSection(sectionJustEntered);
}
private void DrawAutoTellTabsSection()
private void DrawMessagesSection(bool sectionJustEntered)
{
using var tree = ImRaii.TreeNode(HellionStrings.Settings_Chat_AutoTellTabs_Heading);
if (sectionJustEntered)
ImGui.SetNextItemOpen(false);
using var tree = ImRaii.TreeNode(HellionStrings.Settings_Section_Messages);
if (!tree.Success)
return;
using (ImRaii.PushIndent(ImGui.GetStyle().IndentSpacing, false))
{
// Checkboxes first.
ImGui.Checkbox(
Language.Options_CollapseDuplicateMessages_Name,
ref Mutable.CollapseDuplicateMessages
);
ImGuiUtil.HelpMarker(Language.Options_CollapseDuplicateMessages_Description);
// Conditional child: only visible when parent is on (R4).
if (Mutable.CollapseDuplicateMessages)
{
ImGui.Checkbox(
Language.Options_CollapseDuplicateMsgUniqueLink_Name,
ref Mutable.CollapseKeepUniqueLinks
);
ImGuiUtil.HelpMarker(Language.Options_CollapseDuplicateMsgUniqueLink_Description);
}
ImGui.Checkbox(
HellionStrings.Settings_Chat_NotifyFailedTell_Name,
ref Mutable.NotifyFailedTell
);
ImGuiUtil.HelpMarker(HellionStrings.Settings_Chat_NotifyFailedTell_Description);
ImGui.Checkbox(
HellionStrings.Settings_Chat_NotifyPluginDisclosure_Name,
ref Mutable.NotifyPluginDisclosure
);
ImGuiUtil.HelpMarker(HellionStrings.Settings_Chat_NotifyPluginDisclosure_Description);
// Dropdowns after checkboxes (R3).
// UI-7: name display options.
using (
var combo = ImGuiUtil.BeginComboVertical(
HellionStrings.Settings_Chat_WorldSuffix_Name,
Mutable.WorldSuffixMode.Name()
)
)
{
if (combo.Success)
{
foreach (var mode in Enum.GetValues<WorldSuffixMode>())
{
if (ImGui.Selectable(mode.Name(), Mutable.WorldSuffixMode == mode))
Mutable.WorldSuffixMode = mode;
}
}
}
ImGuiUtil.HelpMarker(HellionStrings.Settings_Chat_WorldSuffix_Description);
using (
var combo = ImGuiUtil.BeginComboVertical(
HellionStrings.Settings_Chat_NameForm_Name,
Mutable.NameFormMode.Name()
)
)
{
if (combo.Success)
{
foreach (var mode in Enum.GetValues<NameFormMode>())
{
if (ImGui.Selectable(mode.Name(), Mutable.NameFormMode == mode))
Mutable.NameFormMode = mode;
}
}
}
ImGuiUtil.HelpMarker(HellionStrings.Settings_Chat_NameForm_Description);
}
}
private void DrawInputPreviewSection(bool sectionJustEntered)
{
if (sectionJustEntered)
ImGui.SetNextItemOpen(false);
using var tree = ImRaii.TreeNode(HellionStrings.Settings_Section_InputPreview);
if (!tree.Success)
return;
using (ImRaii.PushIndent(ImGui.GetStyle().IndentSpacing, false))
{
// Checkboxes first.
ImGui.Checkbox(
HellionStrings.Settings_Chat_SymbolPicker_Enable_Name,
ref Mutable.SymbolPickerEnabled
);
ImGuiUtil.HelpMarker(HellionStrings.Settings_Chat_SymbolPicker_Enable_Description);
ImGui.Checkbox(Language.Options_PreviewOnlyIf_Name, ref Mutable.OnlyPreviewIf);
ImGuiUtil.HelpMarker(Language.Options_PreviewOnlyIf_Description);
// Dropdown after checkboxes (R3).
using (
var combo = ImGuiUtil.BeginComboVertical(
Language.Options_Preview_Name,
Mutable.PreviewPosition.Name()
)
)
{
if (combo)
{
foreach (var position in Enum.GetValues<PreviewPosition>())
{
if (ImGui.Selectable(position.Name(), Mutable.PreviewPosition == position))
Mutable.PreviewPosition = position;
}
}
}
ImGuiUtil.HelpMarker(Language.Options_Preview_Description);
// Number input last (R3).
if (
ImGuiUtil.InputIntVertical(
Language.Options_PreviewMinimum_Name,
Language.Options_PreviewMinimum_Description,
ref Mutable.PreviewMinimum
)
)
Mutable.PreviewMinimum = Math.Clamp(Mutable.PreviewMinimum, 1, 250);
}
}
private void DrawAutoTellTabsSection(bool sectionJustEntered)
{
if (sectionJustEntered)
ImGui.SetNextItemOpen(false);
using var tree = ImRaii.TreeNode(HellionStrings.Settings_Section_AutoTellTabs);
if (!tree.Success)
return;
using (ImRaii.PushIndent(ImGui.GetStyle().IndentSpacing, false))
{
// Checkboxes first (R3).
ImGui.Checkbox(
HellionStrings.ChatLog_AutoTellTabs_Enable_Name,
ref Mutable.EnableAutoTellTabs
);
ImGuiUtil.HelpMarker(HellionStrings.ChatLog_AutoTellTabs_Enable_Description);
ImGui.SetNextItemWidth(200f * ImGuiHelpers.GlobalScale);
var limit = Mutable.AutoTellTabsLimit;
if (ImGui.SliderInt(HellionStrings.ChatLog_AutoTellTabs_Limit_Name, ref limit, 1, 50))
Mutable.AutoTellTabsLimit = limit;
ImGuiUtil.HelpMarker(HellionStrings.ChatLog_AutoTellTabs_Limit_Description);
ImGui.Checkbox(
HellionStrings.ChatLog_AutoTellTabs_Compact_Name,
ref Mutable.AutoTellTabsCompactDisplay
@@ -89,6 +220,13 @@ internal sealed class Chat : ISettingsTab
);
ImGuiUtil.HelpMarker(HellionStrings.ChatLog_AutoTellTabs_GreetedToggle_Description);
// Sliders after checkboxes (R3).
ImGui.SetNextItemWidth(200f * ImGuiHelpers.GlobalScale);
var limit = Mutable.AutoTellTabsLimit;
if (ImGui.SliderInt(HellionStrings.ChatLog_AutoTellTabs_Limit_Name, ref limit, 1, 50))
Mutable.AutoTellTabsLimit = limit;
ImGuiUtil.HelpMarker(HellionStrings.ChatLog_AutoTellTabs_Limit_Description);
ImGui.Spacing();
ImGuiUtil.HelpText(HellionStrings.ChatLog_AutoTellTabs_PreloadHint);
@@ -117,85 +255,17 @@ internal sealed class Chat : ISettingsTab
}
}
private void DrawBehaviourSection()
private void DrawEmotesSection(bool sectionJustEntered)
{
using var tree = ImRaii.TreeNode(HellionStrings.Settings_Chat_Behaviour_Heading);
if (!tree.Success)
return;
using (ImRaii.PushIndent(ImGui.GetStyle().IndentSpacing, false))
{
ImGui.Checkbox(
Language.Options_CollapseDuplicateMessages_Name,
ref Mutable.CollapseDuplicateMessages
);
ImGuiUtil.HelpMarker(Language.Options_CollapseDuplicateMessages_Description);
if (Mutable.CollapseDuplicateMessages)
{
ImGui.Checkbox(
Language.Options_CollapseDuplicateMsgUniqueLink_Name,
ref Mutable.CollapseKeepUniqueLinks
);
ImGuiUtil.HelpMarker(Language.Options_CollapseDuplicateMsgUniqueLink_Description);
}
ImGui.Checkbox(
HellionStrings.Settings_Chat_SymbolPicker_Enable_Name,
ref Mutable.SymbolPickerEnabled
);
ImGuiUtil.HelpMarker(HellionStrings.Settings_Chat_SymbolPicker_Enable_Description);
}
}
private void DrawPreviewSection()
{
using var tree = ImRaii.TreeNode(HellionStrings.Settings_Chat_Preview_Heading);
if (!tree.Success)
return;
using (ImRaii.PushIndent(ImGui.GetStyle().IndentSpacing, false))
{
using (
var combo = ImGuiUtil.BeginComboVertical(
Language.Options_Preview_Name,
Mutable.PreviewPosition.Name()
)
)
{
if (combo)
{
foreach (var position in Enum.GetValues<PreviewPosition>())
{
if (ImGui.Selectable(position.Name(), Mutable.PreviewPosition == position))
Mutable.PreviewPosition = position;
}
}
}
ImGuiUtil.HelpMarker(Language.Options_Preview_Description);
if (
ImGuiUtil.InputIntVertical(
Language.Options_PreviewMinimum_Name,
Language.Options_PreviewMinimum_Description,
ref Mutable.PreviewMinimum
)
)
Mutable.PreviewMinimum = Math.Clamp(Mutable.PreviewMinimum, 1, 250);
ImGui.Checkbox(Language.Options_PreviewOnlyIf_Name, ref Mutable.OnlyPreviewIf);
ImGuiUtil.HelpMarker(Language.Options_PreviewOnlyIf_Description);
}
}
private void DrawEmotesSection()
{
using var tree = ImRaii.TreeNode(HellionStrings.Settings_Chat_Emotes_Heading);
if (sectionJustEntered)
ImGui.SetNextItemOpen(false);
using var tree = ImRaii.TreeNode(HellionStrings.Settings_Section_Emotes);
if (!tree.Success)
return;
using (ImRaii.PushIndent(ImGui.GetStyle().IndentSpacing, false))
{
// Checkbox first (R3).
ImGui.Checkbox(Language.Options_ShowEmotes_Name, ref Mutable.ShowEmotes);
ImGuiUtil.HelpMarker(Language.Options_ShowEmotes_Desc);
@@ -213,6 +283,7 @@ internal sealed class Chat : ISettingsTab
WordPopupOptionsBuiltFor = EmoteCache.LoadingState.Done;
}
// Button to add blocked emotes (R3 — button before table).
var buttonWidth = ImGui.GetContentRegionAvail().X / 3;
using (Plugin.FontManager.FontAwesome.Push())
ImGui.Button(FontAwesomeIcon.Plus.ToIconString(), new Vector2(buttonWidth, 0));
@@ -273,6 +344,7 @@ internal sealed class Chat : ISettingsTab
$"{Language.Options_Emote_Loaded} {EmoteCache.SortedCodeArray.Length}"
);
// 5-column loaded-emotes display table.
using (
var emoteTable = ImRaii.Table(
"##LoadedEmotes",
@@ -298,4 +370,54 @@ internal sealed class Chat : ISettingsTab
}
}
}
private void DrawLinksTooltipsSection(bool sectionJustEntered)
{
if (sectionJustEntered)
ImGui.SetNextItemOpen(false);
using var tree = ImRaii.TreeNode(HellionStrings.Settings_Section_LinksTooltips);
if (!tree.Success)
return;
using (ImRaii.PushIndent(ImGui.GetStyle().IndentSpacing, false))
{
ImGui.Checkbox(
Language.Options_NativeItemTooltips_Name,
ref Mutable.NativeItemTooltips
);
ImGuiUtil.HelpMarker(
string.Format(Language.Options_NativeItemTooltips_Description, Plugin.PluginName)
);
// Conditional slider: only shown when native tooltips are enabled (R4).
if (Mutable.NativeItemTooltips)
{
ImGuiUtil.DragFloatVertical(
Language.Options_TooltipOffset_Name,
Language.Options_TooltipOffset_Desc,
ref Mutable.TooltipOffset,
1,
0f,
400f,
$"{Mutable.TooltipOffset:N0}px",
ImGuiSliderFlags.AlwaysClamp
);
}
}
}
private void DrawNoviceNetworkSection(bool sectionJustEntered)
{
if (sectionJustEntered)
ImGui.SetNextItemOpen(false);
using var tree = ImRaii.TreeNode(HellionStrings.Settings_Section_NoviceNetwork);
if (!tree.Success)
return;
using (ImRaii.PushIndent(ImGui.GetStyle().IndentSpacing, false))
{
ImGui.Checkbox(Language.Options_ShowNoviceNetwork_Name, ref Mutable.ShowNoviceNetwork);
ImGuiUtil.HelpMarker(Language.Options_ShowNoviceNetwork_Description);
}
}
}
@@ -15,16 +15,16 @@ using Microsoft.Extensions.Logging;
namespace HellionChat.Ui.SettingsTabs;
internal sealed class DataManagement : ISettingsTab
internal sealed class DataAndPrivacy : ISettingsTab
{
private Plugin Plugin { get; }
private Configuration Mutable { get; }
private readonly ILogger<DataManagement> _logger;
private readonly ILogger<DataAndPrivacy> _logger;
public string Name =>
HellionStrings.Settings_Card_DataManagement_Title + "###tabs-datamanagement";
// Cleanup state (was in Privacy.cs)
// Cleanup state
private Dictionary<int, long>? CleanupCounts;
private long CleanupKeepCount;
private long CleanupDeleteCount;
@@ -33,7 +33,7 @@ internal sealed class DataManagement : ISettingsTab
private HashSet<ChatType>? CleanupPreviewSnapshot;
private bool RetentionRunning => Plugin.RetentionSweepRunning;
// Export form state (was in Privacy.cs)
// Export form state
private int ExportRangeDays = 30;
private string ExportSenderSubstring = string.Empty;
private readonly HashSet<ChatType> ExportSelectedChannels = [];
@@ -138,36 +138,133 @@ internal sealed class DataManagement : ISettingsTab
),
];
internal DataManagement(Plugin plugin, Configuration mutable, ILogger<DataManagement> logger)
internal DataAndPrivacy(Plugin plugin, Configuration mutable, ILogger<DataAndPrivacy> logger)
{
Plugin = plugin;
Mutable = mutable;
_logger = logger;
}
public void Draw(bool changed)
public void Draw(bool sectionJustEntered)
{
// Shift-on-open keeps the Advanced tools available without a permanent
// toggle in the UI, mirroring upstream Chat 2 behaviour.
if (changed)
if (sectionJustEntered)
ShowAdvanced = ImGui.GetIO().KeyShift;
if (sectionJustEntered)
ImGui.SetNextItemOpen(false);
DrawPrivacyFilterSection();
ImGui.Spacing();
if (sectionJustEntered)
ImGui.SetNextItemOpen(false);
DrawStorageSection();
ImGui.Spacing();
if (sectionJustEntered)
ImGui.SetNextItemOpen(false);
DrawRetentionSection();
ImGui.Spacing();
if (sectionJustEntered)
ImGui.SetNextItemOpen(false);
DrawCleanupSection();
ImGui.Spacing();
if (sectionJustEntered)
ImGui.SetNextItemOpen(false);
DrawExportSection();
ImGui.Spacing();
DrawDatabaseViewerSection();
ImGui.Spacing();
DrawAdvancedSection();
if (sectionJustEntered)
ImGui.SetNextItemOpen(false);
DrawDatabaseSection();
}
private void DrawPrivacyFilterSection()
{
using var tree = ImRaii.TreeNode(HellionStrings.Settings_Section_PrivacyFilter);
if (!tree.Success)
return;
using (ImRaii.PushIndent(ImGui.GetStyle().IndentSpacing, false))
{
// Wizard re-open sits outside the disabled block so it is always clickable.
if (ImGui.Button(HellionStrings.Wizard_Reopen_Button))
Plugin.FirstRunWizard.IsOpen = true;
ImGui.Spacing();
ImGuiUtil.OptionCheckbox(
ref Mutable.PrivacyFilterEnabled,
HellionStrings.Privacy_FilterEnabled_Name,
HellionStrings.Privacy_FilterEnabled_Description
);
ImGuiUtil.HelpMarker(HellionStrings.Privacy_FilterEnabled_StorageOnly_Help);
ImGui.Spacing();
ImGui.Separator();
ImGui.Spacing();
// Whitelist, presets, and PersistUnknown are greyed (still visible)
// when the filter is off — ImRaii.Disabled block preserved verbatim.
using (ImRaii.Disabled(!Mutable.PrivacyFilterEnabled))
{
ImGuiUtil.HelpText(HellionStrings.Privacy_Whitelist_Help);
ImGui.Spacing();
if (ImGui.Button(HellionStrings.Privacy_Preset_PrivacyFirst))
Mutable.PrivacyPersistChannels = [.. PrivacyDefaults.PrivacyFirstWhitelist];
ImGui.SameLine();
if (ImGui.Button(HellionStrings.Privacy_Preset_ClearAll))
Mutable.PrivacyPersistChannels.Clear();
ImGui.SameLine();
if (ImGui.Button(HellionStrings.Privacy_Preset_SelectAll))
foreach (var group in Groups)
foreach (var t in group.Types)
Mutable.PrivacyPersistChannels.Add(t);
ImGui.Spacing();
ImGui.Separator();
ImGui.Spacing();
foreach (var (heading, types) in Groups)
{
using var groupTree = ImRaii.TreeNode(heading());
if (!groupTree.Success)
continue;
using (ImRaii.PushIndent(ImGui.GetStyle().IndentSpacing, false))
{
foreach (var type in types)
{
var enabled = Mutable.PrivacyPersistChannels.Contains(type);
var label = type.ToString();
if (ImGui.Checkbox($"{label}##privacy-{(int)type}", ref enabled))
{
if (enabled)
Mutable.PrivacyPersistChannels.Add(type);
else
Mutable.PrivacyPersistChannels.Remove(type);
}
}
}
}
ImGui.Spacing();
ImGui.Separator();
ImGui.Spacing();
ImGuiUtil.OptionCheckbox(
ref Mutable.PrivacyPersistUnknownChannels,
HellionStrings.Privacy_PersistUnknown_Name,
HellionStrings.Privacy_PersistUnknown_Description
);
}
}
}
private void DrawStorageSection()
{
using var tree = ImRaii.TreeNode(HellionStrings.Settings_DataManagement_Storage_Heading);
using var tree = ImRaii.TreeNode(HellionStrings.Settings_Section_Storage);
if (!tree.Success)
return;
@@ -245,7 +342,7 @@ internal sealed class DataManagement : ISettingsTab
private void DrawRetentionSection()
{
using var tree = ImRaii.TreeNode(HellionStrings.Settings_DataManagement_Retention_Heading);
using var tree = ImRaii.TreeNode(HellionStrings.Settings_Section_Retention);
if (!tree.Success)
return;
@@ -437,7 +534,7 @@ internal sealed class DataManagement : ISettingsTab
private void DrawCleanupSection()
{
using var tree = ImRaii.TreeNode(HellionStrings.Settings_DataManagement_Cleanup_Heading);
using var tree = ImRaii.TreeNode(HellionStrings.Settings_Section_Cleanup);
if (!tree.Success)
return;
@@ -627,7 +724,7 @@ internal sealed class DataManagement : ISettingsTab
private void DrawExportSection()
{
using var tree = ImRaii.TreeNode(HellionStrings.Settings_DataManagement_Export_Heading);
using var tree = ImRaii.TreeNode(HellionStrings.Settings_Section_Export);
if (!tree.Success)
return;
@@ -785,9 +882,9 @@ internal sealed class DataManagement : ISettingsTab
}.Start();
}
private void DrawDatabaseViewerSection()
private void DrawDatabaseSection()
{
using var tree = ImRaii.TreeNode(HellionStrings.Settings_DataManagement_DbViewer_Heading);
using var tree = ImRaii.TreeNode(HellionStrings.Settings_Section_Database);
if (!tree.Success)
return;
@@ -862,49 +959,51 @@ internal sealed class DataManagement : ISettingsTab
NotificationType.Info
);
}
}
}
private void DrawAdvancedSection()
{
if (!ShowAdvanced)
return;
// Advanced sub-block: only visible when the tab was opened with Shift held.
// Gate matches the Shift-on-open flag set at the top of Draw().
if (!ShowAdvanced)
return;
using var tree = ImRaii.TreeNode(HellionStrings.Settings_DataManagement_Advanced_Heading);
if (!tree.Success)
return;
ImGui.Spacing();
using var advTree = ImRaii.TreeNode(
HellionStrings.Settings_DataManagement_Advanced_Heading
);
if (!advTree.Success)
return;
using (ImRaii.PushIndent(ImGui.GetStyle().IndentSpacing, false))
{
using var wrap = ImRaii.TextWrapPos(0.0f);
ImGuiUtil.WarningText(Language.Options_Database_Advanced_Warning);
if (
ImGuiUtil.CtrlShiftButton(
"Perform maintenance",
"Ctrl+Shift: MessageManager.Store.PerformMaintenance()"
)
)
Plugin.MessageManager.Store.PerformMaintenance();
if (
ImGuiUtil.CtrlShiftButton(
"Reload messages from database",
"Ctrl+Shift: MessageManager.FilterAllTabs()"
)
)
using (ImRaii.PushIndent(ImGui.GetStyle().IndentSpacing, false))
{
Plugin.MessageManager.ClearAllTabs();
Plugin.MessageManager.FilterAllTabsAsync();
}
using var wrap = ImRaii.TextWrapPos(0.0f);
if (
ImGuiUtil.CtrlShiftButton(
"Inject 10,000 messages",
"Ctrl+Shift: creates 10,000 unique messages (async)"
ImGuiUtil.WarningText(Language.Options_Database_Advanced_Warning);
if (
ImGuiUtil.CtrlShiftButton(
"Perform maintenance",
"Ctrl+Shift: MessageManager.Store.PerformMaintenance()"
)
)
)
new Thread(() => InsertMessages(10_000)).Start();
Plugin.MessageManager.Store.PerformMaintenance();
if (
ImGuiUtil.CtrlShiftButton(
"Reload messages from database",
"Ctrl+Shift: MessageManager.FilterAllTabs()"
)
)
{
Plugin.MessageManager.ClearAllTabs();
Plugin.MessageManager.FilterAllTabsAsync();
}
if (
ImGuiUtil.CtrlShiftButton(
"Inject 10,000 messages",
"Ctrl+Shift: creates 10,000 unique messages (async)"
)
)
new Thread(() => InsertMessages(10_000)).Start();
}
}
}
@@ -1,317 +0,0 @@
using Dalamud;
using Dalamud.Bindings.ImGui;
using Dalamud.Interface;
using Dalamud.Interface.FontIdentifier;
using Dalamud.Interface.Utility;
using Dalamud.Interface.Utility.Raii;
using HellionChat.Code;
using HellionChat.Resources;
using HellionChat.Util;
using Microsoft.Extensions.Logging;
namespace HellionChat.Ui.SettingsTabs;
internal sealed class FontsAndColours : ISettingsTab
{
private Plugin Plugin { get; }
private Configuration Mutable { get; }
private readonly ILogger<FontsAndColours> _logger;
public string Name =>
HellionStrings.Settings_Card_FontsAndColours_Title + "###tabs-fontsandcolours";
internal FontsAndColours(Plugin plugin, Configuration mutable, ILogger<FontsAndColours> logger)
{
Plugin = plugin;
Mutable = mutable;
_logger = logger;
}
public void Draw(bool changed)
{
DrawFontsSection();
ImGui.Spacing();
DrawColoursSection();
}
private void DrawFontsSection()
{
using var tree = ImRaii.TreeNode(HellionStrings.Settings_FontsAndColours_Fonts_Heading);
if (!tree.Success)
return;
using (ImRaii.PushIndent(ImGui.GetStyle().IndentSpacing, false))
{
if (
ImGui.Checkbox(HellionStrings.Theme_UseHellionFont_Name, ref Mutable.UseHellionFont)
)
{
if (Mutable.UseHellionFont)
Mutable.FontsEnabled = false;
}
ImGuiUtil.HelpMarker(HellionStrings.Theme_UseHellionFont_Description);
ImGui.Spacing();
if (Mutable.UseHellionFont)
{
// Bundled-font path: only the base font size matters; the
// global / japanese / italic chooser pickers do not apply.
ImGuiUtil.FontSizeCombo(Language.Options_FontSize_Name, ref Mutable.FontSizeV2);
ImGui.Spacing();
}
else
{
ImGui.Checkbox(Language.Options_FontsEnabled, ref Mutable.FontsEnabled);
ImGui.Spacing();
}
var unused = false;
if (!Mutable.UseHellionFont && !Mutable.FontsEnabled)
{
ImGuiUtil.FontSizeCombo(Language.Options_FontSize_Name, ref Mutable.FontSizeV2);
}
else if (!Mutable.UseHellionFont)
{
var globalChooser = ImGuiUtil.FontChooser(
Language.Options_Font_Name,
Mutable.GlobalFontV2,
false,
ref unused
);
globalChooser?.ResultTask.ContinueWith(r =>
{
if (r.IsCompletedSuccessfully)
{
Plugin.Framework.Run(() => Mutable.GlobalFontV2 = r.Result);
}
});
ImGui.SameLine();
if (ImGui.Button("Reset##global"))
{
Mutable.GlobalFontV2 = new SingleFontSpec
{
FontId = new DalamudAssetFontAndFamilyId(DalamudAsset.NotoSansCjkRegular),
SizePt = 12.75f,
};
}
ImGuiUtil.HelpMarker(
string.Format(Language.Options_Font_Description, Plugin.PluginName)
);
ImGuiUtil.WarningText(Language.Options_Font_Warning);
ImGui.Spacing();
var japaneseChooser = ImGuiUtil.FontChooser(
Language.Options_JapaneseFont_Name,
Mutable.JapaneseFontV2,
false,
ref unused,
id => !id.LocaleNames?.ContainsKey("ja-jp") ?? false,
"いろはにほへと ちりぬるを"
);
japaneseChooser?.ResultTask.ContinueWith(r =>
{
if (r.IsCompletedSuccessfully)
{
Plugin.Framework.Run(() => Mutable.JapaneseFontV2 = r.Result);
}
});
ImGui.SameLine();
if (ImGui.Button("Reset##japanese"))
{
Mutable.JapaneseFontV2 = new SingleFontSpec
{
FontId = new DalamudAssetFontAndFamilyId(DalamudAsset.NotoSansCjkMedium),
SizePt = 12.75f,
};
}
ImGuiUtil.HelpMarker(
string.Format(Language.Options_JapaneseFont_Description, Plugin.PluginName)
);
ImGui.Spacing();
var italicChooser = ImGuiUtil.FontChooser(
Language.Options_ItalicFont_Name,
Mutable.ItalicFontV2,
true,
ref Mutable.ItalicEnabled
);
italicChooser?.ResultTask.ContinueWith(r =>
{
if (r.IsCompletedSuccessfully)
{
Plugin.Framework.Run(() => Mutable.ItalicFontV2 = r.Result);
}
});
ImGui.SameLine();
if (ImGui.Button("Reset##italic"))
{
Mutable.ItalicEnabled = false;
Mutable.ItalicFontV2 = new SingleFontSpec
{
FontId = new DalamudAssetFontAndFamilyId(DalamudAsset.NotoSansCjkRegular),
SizePt = 12.75f,
};
}
ImGuiUtil.HelpMarker(
string.Format(Language.Options_Italic_Description, Plugin.PluginName)
);
ImGui.Spacing();
}
// v1.5.3: ExtraGlyphRanges is an atlas-wide property and stays
// reachable regardless of UseHellionFont / FontsEnabled state so
// users can verify or override the auto-activation on language change.
ImGui.Spacing();
if (ImGui.CollapsingHeader(Language.Options_ExtraGlyphs_Name))
{
ImGuiUtil.HelpMarker(
string.Format(Language.Options_ExtraGlyphs_Description, Plugin.PluginName)
);
var range = (int)Mutable.ExtraGlyphRanges;
foreach (var extra in Enum.GetValues<ExtraGlyphRanges>())
{
ImGui.CheckboxFlags(extra.Name(), ref range, (int)extra);
}
Mutable.ExtraGlyphRanges = (ExtraGlyphRanges)range;
}
ImGuiUtil.FontSizeCombo(
Language.Options_SymbolsFontSize_Name,
ref Mutable.SymbolsFontSizeV2
);
ImGuiUtil.HelpMarker(Language.Options_SymbolsFontSize_Description);
ImGui.Spacing();
}
}
private void DrawColoursSection()
{
using var tree = ImRaii.TreeNode(HellionStrings.Settings_FontsAndColours_Colours_Heading);
if (!tree.Success)
return;
using (ImRaii.PushIndent(ImGui.GetStyle().IndentSpacing, false))
{
DrawColourPresetButtons();
ImGui.TextDisabled(HellionStrings.Settings_Appearance_Colours_PresetsHint);
ImGui.Spacing();
ImGui.Separator();
ImGui.Spacing();
ImGui.Checkbox(
Language.Options_ColorSelectedInputChannelButton_Name,
ref Mutable.ColorSelectedInputChannelButton
);
ImGuiUtil.HelpMarker(Language.Options_ColorSelectedInputChannelButton_Description);
ImGui.Spacing();
foreach (var (_, types) in ChatTypeExt.SortOrder)
{
foreach (var type in types)
{
if (
ImGuiUtil.IconButton(
FontAwesomeIcon.UndoAlt,
$"{type}",
Language.Options_ChatColours_Reset
)
)
{
Mutable.ChatColours.Remove(type);
}
ImGui.SameLine();
if (
ImGuiUtil.IconButton(
FontAwesomeIcon.LongArrowAltDown,
$"{type}",
Language.Options_ChatColours_Import
)
)
{
var gameColour = Plugin.Functions.Chat.GetChannelColor(type);
Mutable.ChatColours[type] = gameColour ?? type.DefaultColor() ?? 0;
}
ImGui.SameLine();
var vec = Mutable.ChatColours.TryGetValue(type, out var colour)
? ColourUtil.RgbaToVector3(colour)
: ColourUtil.RgbaToVector3(type.DefaultColor() ?? 0);
if (ImGui.ColorEdit3(type.Name(), ref vec, ImGuiColorEditFlags.NoInputs))
{
Mutable.ChatColours[type] = ColourUtil.Vector3ToRgba(vec);
}
}
}
ImGui.Spacing();
}
}
private void DrawColourPresetButtons()
{
var first = true;
foreach (var (_, preset) in ChatColourPresets.All)
{
if (!first)
{
ImGui.SameLine();
}
first = false;
if (preset.IsBrandPreset)
{
var border = ColourUtil.RgbaToVector3(ColourUtil.ComponentsToRgba(255, 128, 200));
var btn = ColourUtil.RgbaToVector3(ColourUtil.ComponentsToRgba(74, 42, 106));
ImGui.PushStyleColor(
ImGuiCol.Border,
new System.Numerics.Vector4(border.X, border.Y, border.Z, 1f)
);
ImGui.PushStyleColor(
ImGuiCol.Button,
new System.Numerics.Vector4(btn.X, btn.Y, btn.Z, 1f)
);
ImGui.PushStyleVar(ImGuiStyleVar.FrameBorderSize, 1.5f);
}
if (ImGui.Button(GetPresetLabel(preset)))
{
ApplyPreset(preset);
}
if (preset.IsBrandPreset)
{
ImGui.PopStyleVar();
ImGui.PopStyleColor(2);
}
}
}
private static string GetPresetLabel(ChatColourPreset preset)
{
var localized = HellionStrings.ResourceManager.GetString(
preset.LocalizationKey,
HellionStrings.Culture
);
return string.IsNullOrEmpty(localized) ? preset.DisplayName : localized;
}
private void ApplyPreset(ChatColourPreset preset)
{
foreach (var (channel, colour) in preset.Colours)
{
Mutable.ChatColours[channel] = colour;
}
Plugin.SaveConfig();
GlobalParametersCache.Refresh();
_logger.LogDebug($"Applied chat colour preset: {preset.DisplayName}");
}
}
+65 -39
View File
@@ -19,24 +19,25 @@ internal sealed class General : ISettingsTab
Mutable = mutable;
}
public void Draw(bool changed)
public void Draw(bool sectionJustEntered)
{
DrawInputSection();
DrawInputSection(sectionJustEntered);
ImGui.Spacing();
DrawAudioSection();
DrawSoundSection(sectionJustEntered);
ImGui.Spacing();
DrawPerformanceSection();
DrawLanguageSection(sectionJustEntered);
ImGui.Spacing();
DrawLanguageSection();
DrawPerformanceSection(sectionJustEntered);
}
private void DrawInputSection()
private void DrawInputSection(bool sectionJustEntered)
{
using var tree = ImRaii.TreeNode(HellionStrings.Settings_General_Input_Heading);
// Collapse every time the tab is freshly entered so state doesn't bleed across sessions.
if (sectionJustEntered)
ImGui.SetNextItemOpen(false);
using var tree = ImRaii.TreeNode(HellionStrings.Settings_Section_Input);
if (!tree.Success)
{
return;
}
using (ImRaii.PushIndent(ImGui.GetStyle().IndentSpacing, false))
{
@@ -83,53 +84,61 @@ internal sealed class General : ISettingsTab
}
}
private void DrawAudioSection()
private void DrawSoundSection(bool sectionJustEntered)
{
using var tree = ImRaii.TreeNode(HellionStrings.Settings_General_Audio_Heading);
// Collapse every time the tab is freshly entered so state doesn't bleed across sessions.
if (sectionJustEntered)
ImGui.SetNextItemOpen(false);
using var tree = ImRaii.TreeNode(HellionStrings.Settings_Section_Sound);
if (!tree.Success)
{
return;
}
using (ImRaii.PushIndent(ImGui.GetStyle().IndentSpacing, false))
{
ImGui.Checkbox(Language.Options_PlaySounds_Name, ref Mutable.PlaySounds);
ImGuiUtil.HelpMarker(Language.Options_PlaySounds_Description);
ImGui.Checkbox(Language.Options_ShowNoviceNetwork_Name, ref Mutable.ShowNoviceNetwork);
ImGuiUtil.HelpMarker(Language.Options_ShowNoviceNetwork_Description);
}
}
private void DrawPerformanceSection()
{
using var tree = ImRaii.TreeNode(HellionStrings.Settings_General_Performance_Heading);
if (!tree.Success)
{
return;
}
using (ImRaii.PushIndent(ImGui.GetStyle().IndentSpacing, false))
{
ImGui.SetNextItemWidth(200f * ImGuiHelpers.GlobalScale);
if (ImGui.InputInt(Language.Options_MaxLinesToShow_Name, ref Mutable.MaxLinesToRender))
// Volume is stored as a 0-1 float but shown as 0-100% to match user
// intuition. Full range — unlike opacity there is no unsafe floor.
var customSoundVolumePercent = Mutable.CustomSoundVolume * 100f;
if (
ImGuiUtil.DragFloatVertical(
HellionStrings.Settings_General_CustomSoundVolume_Name,
ref customSoundVolumePercent,
1f,
0f,
100f,
$"{customSoundVolumePercent:N0}%%",
ImGuiSliderFlags.AlwaysClamp
)
)
{
Mutable.MaxLinesToRender = Math.Clamp(Mutable.MaxLinesToRender, 1, 10_000);
Mutable.CustomSoundVolume = customSoundVolumePercent / 100f;
}
ImGuiUtil.HelpMarker(Language.Options_MaxLinesToShow_Description);
// Show the functional description and the per-tab navigation hint together.
ImGuiUtil.HelpMarker(
HellionStrings.Settings_General_CustomSoundVolume_Description
+ "\n\n"
+ HellionStrings.Settings_Section_Sound_TabsHint
);
}
}
private void DrawLanguageSection()
private void DrawLanguageSection(bool sectionJustEntered)
{
using var tree = ImRaii.TreeNode(HellionStrings.Settings_General_Language_Heading);
// Collapse every time the tab is freshly entered so state doesn't bleed across sessions.
if (sectionJustEntered)
ImGui.SetNextItemOpen(false);
using var tree = ImRaii.TreeNode(HellionStrings.Settings_Section_Language);
if (!tree.Success)
{
return;
}
using (ImRaii.PushIndent(ImGui.GetStyle().IndentSpacing, false))
{
ImGui.Checkbox(Language.Options_SortAutoTranslate_Name, ref Mutable.SortAutoTranslate);
ImGuiUtil.HelpMarker(Language.Options_SortAutoTranslate_Description);
ImGui.Spacing();
using (
var combo = ImGuiUtil.BeginComboVertical(
Language.Options_Language_Name,
@@ -183,9 +192,26 @@ internal sealed class General : ISettingsTab
string.Format(Language.Options_CommandHelpSide_Description, Plugin.PluginName)
);
ImGui.Spacing();
}
}
ImGui.Checkbox(Language.Options_SortAutoTranslate_Name, ref Mutable.SortAutoTranslate);
ImGuiUtil.HelpMarker(Language.Options_SortAutoTranslate_Description);
private void DrawPerformanceSection(bool sectionJustEntered)
{
// Collapse every time the tab is freshly entered so state doesn't bleed across sessions.
if (sectionJustEntered)
ImGui.SetNextItemOpen(false);
using var tree = ImRaii.TreeNode(HellionStrings.Settings_Section_Performance);
if (!tree.Success)
return;
using (ImRaii.PushIndent(ImGui.GetStyle().IndentSpacing, false))
{
ImGui.SetNextItemWidth(200f * ImGuiHelpers.GlobalScale);
if (ImGui.InputInt(Language.Options_MaxLinesToShow_Name, ref Mutable.MaxLinesToRender))
{
Mutable.MaxLinesToRender = Math.Clamp(Mutable.MaxLinesToRender, 1, 10_000);
}
ImGuiUtil.HelpMarker(Language.Options_MaxLinesToShow_Description);
}
}
}
+1 -1
View File
@@ -3,5 +3,5 @@ namespace HellionChat.Ui.SettingsTabs;
internal interface ISettingsTab
{
string Name { get; }
void Draw(bool changed);
void Draw(bool sectionJustEntered);
}
-230
View File
@@ -1,230 +0,0 @@
using Dalamud.Bindings.ImGui;
using Dalamud.Interface;
using Dalamud.Interface.Colors;
using Dalamud.Interface.Utility;
using Dalamud.Interface.Utility.Raii;
using HellionChat.Branding;
using HellionChat.Resources;
using HellionChat.Util;
namespace HellionChat.Ui.SettingsTabs;
// Combines the former About and Changelog tabs into three collapsible sections.
internal sealed class Information : ISettingsTab
{
private Configuration Mutable { get; }
public string Name => HellionStrings.Settings_Tab_Information + "###tabs-information";
private readonly List<string> Translators =
[
"q673135110",
"Akizem",
"d0tiKs",
"Moonlight_Everlit",
"Dark32",
"andreycout",
"Button_",
"Cali666",
"cassandra308",
"lokinmodar",
"jtabox",
"AkiraYorumoto",
"MKhayle",
"elena.space",
"imlisa",
"andrei5125",
"ShivaMaheshvara",
"aislinn87",
"nishinatsu051",
"lichuyuan",
"Risu64",
"yummypillow",
"witchymary",
"Yuzumi",
"zomsakura",
"Sirayuki",
];
internal Information(Configuration mutable)
{
Mutable = mutable;
Translators.Sort(
(a, b) =>
string.Compare(a.ToLowerInvariant(), b.ToLowerInvariant(), StringComparison.Ordinal)
);
}
public void Draw(bool changed)
{
using var wrap = ImRaii.TextWrapPos(0.0f);
DrawHellionForgeSection();
ImGui.Spacing();
DrawVersionInfoSection();
ImGui.Spacing();
DrawAboutSection();
ImGui.Spacing();
DrawChangelogSection();
}
// Provenance anchor — folded by default so the tab opens to the
// version-info section as before. Expands to show the full Hellion
// Forge silhouette in monospace.
private void DrawHellionForgeSection()
{
using var tree = ImRaii.TreeNode("Hellion Forge");
if (!tree.Success)
return;
using (ImRaii.PushIndent(ImGui.GetStyle().IndentSpacing, false))
using (Plugin.Interface.UiBuilder.MonoFontHandle.Push())
ImGui.TextUnformatted(HellionForgeAscii.FoxBanner);
}
private void DrawVersionInfoSection()
{
using var tree = ImRaii.TreeNode(HellionStrings.Settings_Information_VersionInfo_Heading);
if (!tree.Success)
return;
using (ImRaii.PushIndent(ImGui.GetStyle().IndentSpacing, false))
{
ImGui.TextUnformatted(string.Format(Language.Options_About_Opening, Plugin.PluginName));
ImGuiHelpers.ScaledDummy(10.0f);
ImGui.TextUnformatted(Language.Options_About_Authors);
ImGui.SameLine();
ImGui.TextColored(ImGuiColors.ParsedGold, Plugin.Interface.Manifest.Author);
ImGui.TextUnformatted(Language.Options_About_Discord);
ImGui.SameLine();
ImGui.TextColored(ImGuiColors.ParsedGold, "@j.j_kazama");
ImGui.TextUnformatted(Language.Options_About_Version);
ImGui.SameLine();
ImGui.TextColored(
ImGuiColors.ParsedOrange,
Plugin.Interface.Manifest.AssemblyVersion.ToString(3)
);
ImGuiHelpers.ScaledDummy(10.0f);
ImGui.TextUnformatted(Language.Options_About_Github_Issues);
ImGui.SameLine();
if (ImGuiUtil.IconButton(FontAwesomeIcon.ExternalLinkAlt, "githubIssues"))
Plugin.PlatformUtil.OpenLink(
"https://gitea.hellion-forge.cloud/JonKazama-Hellion/HellionChat/issues"
);
}
}
private void DrawAboutSection()
{
using var tree = ImRaii.TreeNode(HellionStrings.Settings_Information_About_Heading);
if (!tree.Success)
return;
using (ImRaii.PushIndent(ImGui.GetStyle().IndentSpacing, false))
{
ImGui.TextColored(ImGuiColors.ParsedGold, HellionStrings.About_Maintainer_Heading);
ImGui.TextUnformatted(HellionStrings.About_Maintainer_Body);
ImGui.TextUnformatted(HellionStrings.About_Maintainer_Website_Label);
ImGui.SameLine();
if (ImGuiUtil.IconButton(FontAwesomeIcon.ExternalLinkAlt, "hellionMedia"))
Plugin.PlatformUtil.OpenLink("https://hellion-media.de");
ImGuiHelpers.ScaledDummy(10.0f);
ImGui.TextColored(ImGuiColors.ParsedGold, HellionStrings.About_Mission_Heading);
ImGui.TextUnformatted(HellionStrings.About_Mission_P1);
ImGui.Spacing();
ImGui.TextUnformatted(HellionStrings.About_Mission_P2);
ImGui.Spacing();
ImGui.TextUnformatted(HellionStrings.About_Mission_P3);
ImGuiHelpers.ScaledDummy(10.0f);
ImGui.TextColored(ImGuiColors.ParsedGold, HellionStrings.About_BuiltOn_Heading);
ImGui.TextUnformatted(HellionStrings.About_BuiltOn_P1);
ImGui.Spacing();
ImGui.TextUnformatted(HellionStrings.About_BuiltOn_P2);
ImGui.Spacing();
ImGui.TextUnformatted(HellionStrings.About_BuiltOn_Upstream_Label);
ImGui.SameLine();
if (ImGuiUtil.IconButton(FontAwesomeIcon.ExternalLinkAlt, "chatTwoUpstream"))
Plugin.PlatformUtil.OpenLink("https://github.com/Infiziert90/ChatTwo");
ImGuiHelpers.ScaledDummy(10.0f);
ImGui.TextColored(ImGuiColors.ParsedGold, HellionStrings.About_License_Heading);
ImGui.TextUnformatted(HellionStrings.About_License_P1);
ImGui.TextUnformatted(HellionStrings.About_License_P2);
ImGui.TextUnformatted(HellionStrings.About_License_P3);
ImGuiHelpers.ScaledDummy(10.0f);
ImGui.TextColored(ImGuiColors.DalamudOrange, HellionStrings.About_SE_Heading);
ImGui.TextUnformatted(HellionStrings.About_SE_P1);
ImGui.TextUnformatted(HellionStrings.About_SE_P2);
ImGui.Spacing();
ImGui.TextColored(ImGuiColors.ParsedGold, HellionStrings.About_Localization_Heading);
ImGui.TextUnformatted(HellionStrings.About_Localization_P1);
ImGui.TextUnformatted(HellionStrings.About_Localization_P2);
ImGui.Spacing();
using (var translatorTree = ImRaii.TreeNode(HellionStrings.About_Translators_TreeNode))
{
if (translatorTree)
{
using var indent = ImRaii.PushIndent(ImGui.GetStyle().IndentSpacing, false);
foreach (var translator in Translators)
ImGui.TextUnformatted(translator);
}
}
}
}
private void DrawChangelogSection()
{
using var tree = ImRaii.TreeNode(HellionStrings.Settings_Information_Changelog_Heading);
if (!tree.Success)
return;
using (ImRaii.PushIndent(ImGui.GetStyle().IndentSpacing, false))
{
ImGui.Checkbox(Language.Options_PrintChangelog_Name, ref Mutable.PrintChangelog);
ImGuiUtil.HelpMarker(Language.Options_PrintChangelog_Description);
ImGui.Spacing();
ImGui.Separator();
ImGui.Spacing();
var changelog = Plugin.Interface.Manifest.Changelog;
if (changelog == null)
return;
ImGui.TextUnformatted(Language.Options_Changelog_Header);
ImGui.TextUnformatted(
$"Version {Plugin.Interface.Manifest.AssemblyVersion.ToString(3)}"
);
ImGui.Spacing();
foreach (var sentence in changelog.Split("\n"))
{
if (sentence == string.Empty)
{
ImGui.NewLine();
continue;
}
var indented = sentence.StartsWith('-') || sentence.StartsWith(" -");
using var indent = ImRaii.PushIndent(10.0f, true, indented);
ImGui.TextUnformatted(sentence);
}
}
}
}
-219
View File
@@ -1,219 +0,0 @@
using Dalamud.Bindings.ImGui;
using Dalamud.Interface;
using Dalamud.Interface.Utility.Raii;
using HellionChat.Branding;
using HellionChat.Integrations;
using HellionChat.Resources;
using HellionChat.Util;
namespace HellionChat.Ui.SettingsTabs;
// Added in v1.3.0. Each future integration cycle adds a section above
// the "Coming soon" block and removes its stub item.
internal sealed class Integrations : ISettingsTab
{
private Plugin Plugin { get; }
private Configuration Mutable { get; }
public string Name => HellionStrings.Settings_Tab_Integrations + "###tabs-integrations";
internal Integrations(Plugin plugin, Configuration mutable)
{
Plugin = plugin;
Mutable = mutable;
}
public void Draw(bool changed)
{
ImGui.TextWrapped(HellionStrings.Settings_Integrations_Intro);
ImGui.Spacing();
ImGui.Spacing();
DrawHonorificSection();
ImGui.Spacing();
ImGui.Spacing();
DrawComingSoonSection();
ImGui.Spacing();
ImGui.Spacing();
DrawGotAnIdeaSection();
}
private void DrawHonorificSection()
{
DrawSectionHeader(HellionStrings.Settings_Integrations_Honorific_SectionHeader);
DrawHonorificStatus();
ImGui.Spacing();
// Toggle works regardless of detection state: "show when available,
// hide otherwise". Disabling it when Honorific is missing would force
// the user to retoggle on every reload.
if (
ImGui.Checkbox(
HellionStrings.Settings_Integrations_Honorific_Toggle,
ref Mutable.ShowHonorificTitleInHeader
)
)
{
Plugin.SaveConfig();
}
using (ImRaii.PushIndent())
{
using (
ImRaii.PushColor(
ImGuiCol.Text,
ColourUtil.RgbaToAbgr(Plugin.ThemeRegistry.Active.Colors.TextMuted)
)
)
{
ImGui.TextWrapped(HellionStrings.Settings_Integrations_Honorific_ToggleHint);
}
if (
ImGui.Checkbox(
HellionStrings.Settings_Integrations_Honorific_Glow_Toggle,
ref Mutable.ShowHonorificGlow
)
)
{
Plugin.SaveConfig();
}
ImGuiUtil.HelpMarker(HellionStrings.Settings_Integrations_Honorific_Glow_Hint);
}
// Honorific has no LICENSE in its repo so we link upstream and author
// instead of bundling assets. Text labels because FA Brands isn't
// guaranteed in Dalamud's font set.
ImGui.Spacing();
if (ImGui.Button(HellionStrings.Settings_Integrations_Honorific_LinkRepo))
{
Plugin.PlatformUtil.OpenLink(IntegrationLinks.HonorificRepo);
}
ImGui.SameLine();
if (ImGui.Button(HellionStrings.Settings_Integrations_Honorific_LinkAuthor))
{
Plugin.PlatformUtil.OpenLink(IntegrationLinks.HonorificAuthor);
}
}
private void DrawHonorificStatus()
{
var theme = Plugin.ThemeRegistry.Active;
var service = Plugin.HonorificService;
if (service.IsAvailable && service.DetectedApiVersion is { } version)
{
DrawStatusGlyph('●', theme.Colors.StatusSuccess);
ImGui.SameLine();
ImGui.TextUnformatted(
string.Format(
HellionStrings.Settings_Integrations_Honorific_Status_Detected,
version.Major,
version.Minor
)
);
}
else if (service.DetectedApiVersion is { } incompatibleVersion)
{
DrawStatusGlyph('⚠', theme.Colors.StatusWarning);
ImGui.SameLine();
ImGui.TextUnformatted(
string.Format(
HellionStrings.Settings_Integrations_Honorific_Status_Incompatible,
HonorificService.ExpectedApiMajor,
incompatibleVersion.Major,
incompatibleVersion.Minor
)
);
}
else
{
DrawStatusGlyph('○', theme.Colors.TextMuted);
ImGui.SameLine();
ImGui.TextUnformatted(
HellionStrings.Settings_Integrations_Honorific_Status_NotInstalled
);
}
}
private static void DrawStatusGlyph(char glyph, uint rgba)
{
using (ImRaii.PushColor(ImGuiCol.Text, ColourUtil.RgbaToAbgr(rgba)))
{
ImGui.TextUnformatted(glyph.ToString());
}
}
private void DrawComingSoonSection()
{
DrawSectionHeader(HellionStrings.Settings_Integrations_ComingSoon_SectionHeader);
ImGui.TextWrapped(HellionStrings.Settings_Integrations_ComingSoon_Intro);
ImGui.Spacing();
// Each integration cycle removes its stub here and adds a full section above.
DrawComingSoonItem(
HellionStrings.Settings_Integrations_ComingSoon_ContextMenu_Title,
HellionStrings.Settings_Integrations_ComingSoon_ContextMenu_Description
);
DrawComingSoonItem(
HellionStrings.Settings_Integrations_ComingSoon_Notifications_Title,
HellionStrings.Settings_Integrations_ComingSoon_Notifications_Description
);
DrawComingSoonItem(
HellionStrings.Settings_Integrations_ComingSoon_RPStatus_Title,
HellionStrings.Settings_Integrations_ComingSoon_RPStatus_Description
);
DrawComingSoonItem(
HellionStrings.Settings_Integrations_ComingSoon_ExtraChat_Title,
HellionStrings.Settings_Integrations_ComingSoon_ExtraChat_Description
);
DrawComingSoonItem(
HellionStrings.Settings_Integrations_ComingSoon_QuickDM_Title,
HellionStrings.Settings_Integrations_ComingSoon_QuickDM_Description
);
}
private void DrawComingSoonItem(string title, string description)
{
var theme = Plugin.ThemeRegistry.Active;
using (ImRaii.PushColor(ImGuiCol.Text, ColourUtil.RgbaToAbgr(theme.Colors.TextMuted)))
using (Plugin.FontManager.FontAwesome.Push())
{
ImGui.TextUnformatted(FontAwesomeIcon.Hourglass.ToIconString());
}
ImGui.SameLine();
ImGui.TextUnformatted(title);
using (ImRaii.PushIndent())
{
using (ImRaii.PushColor(ImGuiCol.Text, ColourUtil.RgbaToAbgr(theme.Colors.TextMuted)))
{
ImGui.TextWrapped(description);
}
}
ImGui.Spacing();
}
private void DrawGotAnIdeaSection()
{
DrawSectionHeader(HellionStrings.Settings_Integrations_GotAnIdea_SectionHeader);
ImGui.TextWrapped(HellionStrings.Settings_Integrations_GotAnIdea_Body);
ImGui.Spacing();
if (ImGui.Button(HellionStrings.Settings_Integrations_GotAnIdea_LinkLabel))
{
Plugin.PlatformUtil.OpenLink(BrandingLinks.HellionForgeDiscordInvite);
}
}
private void DrawSectionHeader(string label)
{
var theme = Plugin.ThemeRegistry.Active;
using (ImRaii.PushColor(ImGuiCol.Text, ColourUtil.RgbaToAbgr(theme.Colors.Primary)))
{
ImGui.TextUnformatted("── " + label + " ──");
}
}
}
-198
View File
@@ -1,198 +0,0 @@
using Dalamud.Bindings.ImGui;
using Dalamud.Interface.Utility.Raii;
using HellionChat.Code;
using HellionChat.Privacy;
using HellionChat.Resources;
using HellionChat.Util;
namespace HellionChat.Ui.SettingsTabs;
internal sealed class Privacy : ISettingsTab
{
private Plugin Plugin { get; }
private Configuration Mutable { get; }
public string Name => HellionStrings.Privacy_Tab_Title + "###tabs-privacy";
internal Privacy(Plugin plugin, Configuration mutable)
{
Plugin = plugin;
Mutable = mutable;
}
// (HeadingKey, ChatType list). Heading resolved per-frame for live language switching.
private static readonly (Func<string> Heading, ChatType[] Types)[] Groups =
[
(
() => HellionStrings.Privacy_Group_DirectMessages,
[ChatType.TellIncoming, ChatType.TellOutgoing]
),
(
() => HellionStrings.Privacy_Group_PartyAlliance,
[ChatType.Party, ChatType.CrossParty, ChatType.Alliance, ChatType.PvpTeam]
),
(
() => HellionStrings.Privacy_Group_FreeCompany,
[
ChatType.FreeCompany,
ChatType.FreeCompanyAnnouncement,
ChatType.FreeCompanyLoginLogout,
]
),
(
() => HellionStrings.Privacy_Group_Linkshells,
[
ChatType.Linkshell1,
ChatType.Linkshell2,
ChatType.Linkshell3,
ChatType.Linkshell4,
ChatType.Linkshell5,
ChatType.Linkshell6,
ChatType.Linkshell7,
ChatType.Linkshell8,
]
),
(
() => HellionStrings.Privacy_Group_CrossLinkshells,
[
ChatType.CrossLinkshell1,
ChatType.CrossLinkshell2,
ChatType.CrossLinkshell3,
ChatType.CrossLinkshell4,
ChatType.CrossLinkshell5,
ChatType.CrossLinkshell6,
ChatType.CrossLinkshell7,
ChatType.CrossLinkshell8,
]
),
(
() => HellionStrings.Privacy_Group_ExtraChat,
[
ChatType.ExtraChatLinkshell1,
ChatType.ExtraChatLinkshell2,
ChatType.ExtraChatLinkshell3,
ChatType.ExtraChatLinkshell4,
ChatType.ExtraChatLinkshell5,
ChatType.ExtraChatLinkshell6,
ChatType.ExtraChatLinkshell7,
ChatType.ExtraChatLinkshell8,
]
),
(
() => HellionStrings.Privacy_Group_PublicChat,
[
ChatType.Say,
ChatType.Shout,
ChatType.Yell,
ChatType.NoviceNetwork,
ChatType.CustomEmote,
ChatType.StandardEmote,
]
),
(
() => HellionStrings.Privacy_Group_SystemLogs,
[
ChatType.System,
ChatType.Notice,
ChatType.Urgent,
ChatType.Echo,
ChatType.NpcDialogue,
ChatType.NpcAnnouncement,
ChatType.LootNotice,
ChatType.LootRoll,
ChatType.RetainerSale,
ChatType.Crafting,
ChatType.Gathering,
ChatType.Sign,
ChatType.RandomNumber,
]
),
];
public void Draw(bool changed)
{
if (ImGui.Button(HellionStrings.Wizard_Reopen_Button))
Plugin.FirstRunWizard.IsOpen = true;
ImGui.Spacing();
DrawPrivacyFilterSection();
}
private void DrawPrivacyFilterSection()
{
using var tree = ImRaii.TreeNode(HellionStrings.Privacy_Filter_Tree_Heading);
if (!tree.Success)
return;
using (ImRaii.PushIndent(ImGui.GetStyle().IndentSpacing, false))
{
ImGuiUtil.OptionCheckbox(
ref Mutable.PrivacyFilterEnabled,
HellionStrings.Privacy_FilterEnabled_Name,
HellionStrings.Privacy_FilterEnabled_Description
);
ImGuiUtil.HelpMarker(HellionStrings.Privacy_FilterEnabled_StorageOnly_Help);
ImGui.Spacing();
ImGui.Separator();
ImGui.Spacing();
using (ImRaii.Disabled(!Mutable.PrivacyFilterEnabled))
{
ImGuiUtil.HelpText(HellionStrings.Privacy_Whitelist_Help);
ImGui.Spacing();
if (ImGui.Button(HellionStrings.Privacy_Preset_PrivacyFirst))
Mutable.PrivacyPersistChannels = [.. PrivacyDefaults.PrivacyFirstWhitelist];
ImGui.SameLine();
if (ImGui.Button(HellionStrings.Privacy_Preset_ClearAll))
Mutable.PrivacyPersistChannels.Clear();
ImGui.SameLine();
if (ImGui.Button(HellionStrings.Privacy_Preset_SelectAll))
foreach (var group in Groups)
foreach (var t in group.Types)
Mutable.PrivacyPersistChannels.Add(t);
ImGui.Spacing();
ImGui.Separator();
ImGui.Spacing();
foreach (var (heading, types) in Groups)
{
using var groupTree = ImRaii.TreeNode(heading());
if (!groupTree.Success)
continue;
using (ImRaii.PushIndent(ImGui.GetStyle().IndentSpacing, false))
{
foreach (var type in types)
{
var enabled = Mutable.PrivacyPersistChannels.Contains(type);
var label = type.ToString();
if (ImGui.Checkbox($"{label}##privacy-{(int)type}", ref enabled))
{
if (enabled)
Mutable.PrivacyPersistChannels.Add(type);
else
Mutable.PrivacyPersistChannels.Remove(type);
}
}
}
}
ImGui.Spacing();
ImGui.Separator();
ImGui.Spacing();
ImGuiUtil.OptionCheckbox(
ref Mutable.PrivacyPersistUnknownChannels,
HellionStrings.Privacy_PersistUnknown_Name,
HellionStrings.Privacy_PersistUnknown_Description
);
}
}
}
}
+398 -181
View File
@@ -2,6 +2,7 @@ using Dalamud.Bindings.ImGui;
using Dalamud.Game.ClientState.Objects.SubKinds;
using Dalamud.Interface;
using Dalamud.Interface.Utility.Raii;
using FFXIVClientStructs.FFXIV.Client.UI;
using HellionChat.Code;
using HellionChat.Resources;
using HellionChat.Util;
@@ -23,7 +24,7 @@ internal sealed class Tabs : ISettingsTab
Mutable = mutable;
}
public void Draw(bool changed)
public void Draw(bool sectionJustEntered)
{
const string addTabPopup = "add-tab-popup";
@@ -71,6 +72,13 @@ internal sealed class Tabs : ISettingsTab
{
var tab = Mutable.Tabs[i];
// Sub-sections (Channels/Display/Notification/Input/Pop-out) are inlined into
// this loop body rather than extracted to helpers, because each one closes over
// the per-iteration `i` and `tab` state. Extraction would mean passing both
// into every helper without meaningful encapsulation gain.
// ToOpen controls which tab-item TreeNode is open (e.g. after add/move).
// This is the outer level — not touched by sectionJustEntered.
if (doOpens)
ImGui.SetNextItemOpen(i == ToOpen);
@@ -116,6 +124,7 @@ internal sealed class Tabs : ISettingsTab
ToOpen = i + 1;
}
// Name and Icon are always visible — no sub-section collapse for these.
ImGui.InputText(
Language.Options_Tabs_Name,
ref tab.Name,
@@ -164,212 +173,420 @@ internal sealed class Tabs : ISettingsTab
}
}
ImGui.Checkbox(Language.Options_Tabs_ShowTimestamps, ref tab.DisplayTimestamp);
ImGui.Checkbox(Language.Options_Tabs_PopOut, ref tab.PopOut);
if (tab.PopOut)
{
using var _ = ImRaii.PushIndent(10.0f);
ImGui.Checkbox(
Language.Options_Tabs_IndependentOpacity,
ref tab.IndependentOpacity
);
if (tab.IndependentOpacity)
ImGuiUtil.DragFloatVertical(
Language.Options_Tabs_Opacity,
ref tab.Opacity,
0.25f,
0f,
100f,
$"{tab.Opacity:N2}%%",
ImGuiSliderFlags.AlwaysClamp
);
ImGui.Checkbox(Language.Options_Tabs_IndependentHide, ref tab.IndependentHide);
if (tab.IndependentHide)
{
using var __ = ImRaii.PushIndent(10.0f);
ImGuiUtil.OptionCheckbox(
ref tab.HideDuringCutscenes,
Language.Options_HideDuringCutscenes_Name
);
ImGui.Spacing();
ImGuiUtil.OptionCheckbox(
ref tab.HideWhenNotLoggedIn,
Language.Options_HideWhenNotLoggedIn_Name
);
ImGui.Spacing();
ImGuiUtil.OptionCheckbox(
ref tab.HideWhenUiHidden,
Language.Options_HideWhenUiHidden_Name
);
ImGui.Spacing();
ImGuiUtil.OptionCheckbox(
ref tab.HideInLoadingScreens,
Language.Options_HideInLoadingScreens_Name
);
ImGui.Spacing();
ImGuiUtil.OptionCheckbox(
ref tab.HideInBattle,
Language.Options_HideInBattle_Name
);
ImGui.Spacing();
}
ImGuiUtil.OptionCheckbox(ref tab.CanMove, Language.Popout_CanMove_Name);
ImGui.Spacing();
ImGuiUtil.OptionCheckbox(ref tab.CanResize, Language.Popout_CanResize_Name);
ImGui.Spacing();
}
ImGui.Spacing();
// ── Sub-section: Channels ─────────────────────────────────────────
// First because it answers "what does this tab collect?" — most important.
if (sectionJustEntered)
ImGui.SetNextItemOpen(false);
using (
var combo = ImGuiUtil.BeginComboVertical(
Language.Options_Tabs_UnreadMode,
tab.UnreadMode.Name()
var secChannels = ImRaii.TreeNode(
HellionStrings.Settings_Section_Tab_Channels + $"##sec-channels-{i}"
)
)
{
if (combo.Success)
if (secChannels.Success)
{
foreach (var mode in Enum.GetValues<UnreadMode>())
{
if (ImGui.Selectable(mode.Name(), tab.UnreadMode == mode))
tab.UnreadMode = mode;
if (mode.Tooltip() is { } tooltip && ImGui.IsItemHovered())
ImGuiUtil.Tooltip(tooltip);
}
using var indent = ImRaii.PushIndent(ImGui.GetStyle().IndentSpacing, false);
ImGuiUtil.ChannelSelector(Language.Options_Tabs_Channels, tab.SelectedChannels);
ImGuiUtil.ExtraChatSelector(
Language.Options_Tabs_ExtraChatChannels,
ref tab.ExtraChatAll,
tab.ExtraChatChannels
);
}
}
if (Mutable.HideWhenInactive)
ImGui.Checkbox(Language.Options_Tabs_InactivityBehaviour, ref tab.UnhideOnActivity);
ImGui.Spacing();
ImGui.Checkbox(Language.Options_Tabs_NoInput, ref tab.InputDisabled);
if (!tab.InputDisabled)
{
var input =
tab.Channel?.ToChatType().Name() ?? Language.Options_Tabs_NoInputChannel;
using (
var combo = ImGuiUtil.BeginComboVertical(
Language.Options_Tabs_InputChannel,
input
)
// ── Sub-section: Display ──────────────────────────────────────────
if (sectionJustEntered)
ImGui.SetNextItemOpen(false);
using (
var secDisplay = ImRaii.TreeNode(
HellionStrings.Settings_Section_Tab_Display + $"##sec-display-{i}"
)
)
{
if (secDisplay.Success)
{
if (combo.Success)
{
if (
ImGui.Selectable(
Language.Options_Tabs_NoInputChannel,
tab.Channel == null
)
using var indent = ImRaii.PushIndent(ImGui.GetStyle().IndentSpacing, false);
ImGui.Checkbox(Language.Options_Tabs_ShowTimestamps, ref tab.DisplayTimestamp);
using (
var combo = ImGuiUtil.BeginComboVertical(
Language.Options_Tabs_UnreadMode,
tab.UnreadMode.Name()
)
tab.Channel = null;
foreach (var channel in Enum.GetValues<InputChannel>())
if (
ImGui.Selectable(
channel.ToChatType().Name(),
tab.Channel == channel
)
)
tab.Channel = channel;
}
}
var player = Plugin.ObjectTable.LocalPlayer;
if (tab.Channel == InputChannel.Tell && player != null)
{
ImGui.Checkbox(Language.Options_Tabs_SenderMessages, ref tab.AllSenderMessages);
ImGuiUtil.HelpText(Language.Options_Help_SenderMessages);
var worlds = Sheets
.WorldsOnDatacenter(player)
.OrderByDescending(world => world.DataCenter.RowId)
.ThenBy(world => world.Name.ToString())
.ToList();
using (ImRaii.ItemWidth(ImGui.GetWindowWidth() / 3f))
)
{
ImGui.Text(Language.Options_Header_Target);
ImGui.SameLine();
var name = tab.TellTarget.Name;
if (ImGui.InputText("##targetInput", ref name, 21))
tab.TellTarget.Name = name;
ImGui.SameLine();
// Guard against an empty worlds list (character switch or sheet not yet populated)
// to avoid an out-of-bounds crash on worlds[selectedWorld].
if (worlds.Count == 0)
if (combo.Success)
{
ImGui.TextDisabled("(no worlds available)");
}
else
{
var selectedWorld = worlds.FindIndex(world =>
world.RowId == tab.TellTarget.World
);
if (selectedWorld == -1)
selectedWorld = 0;
using (
var combo = ImRaii.Combo(
"###player-world",
worlds[selectedWorld].Name.ToString()
)
)
foreach (var mode in Enum.GetValues<UnreadMode>())
{
if (combo.Success)
{
var lastDc = worlds.First().DataCenter.RowId;
foreach (var (idx, world) in worlds.Index())
{
if (
ImGui.Selectable(
world.Name.ToString(),
selectedWorld == idx
)
)
{
selectedWorld = idx;
tab.TellTarget.World = worlds[selectedWorld].RowId;
}
if (ImGui.Selectable(mode.Name(), tab.UnreadMode == mode))
tab.UnreadMode = mode;
if (lastDc == world.DataCenter.RowId)
continue;
lastDc = world.DataCenter.RowId;
ImGui.Separator();
}
}
if (mode.Tooltip() is { } tooltip && ImGui.IsItemHovered())
ImGuiUtil.Tooltip(tooltip);
}
}
}
var target =
(Plugin.TargetManager.SoftTarget ?? Plugin.TargetManager.Target)
as IPlayerCharacter;
using (ImRaii.Disabled(target == null))
// Only relevant when the global hide-when-inactive is on.
if (Mutable.HideWhenInactive)
ImGui.Checkbox(
Language.Options_Tabs_InactivityBehaviour,
ref tab.UnhideOnActivity
);
}
}
ImGui.Spacing();
// ── Sub-section: Notification ─────────────────────────────────────
if (sectionJustEntered)
ImGui.SetNextItemOpen(false);
using (
var secNotif = ImRaii.TreeNode(
HellionStrings.Settings_Section_Tab_Notification + $"##sec-notif-{i}"
)
)
{
if (secNotif.Success)
{
using var indent = ImRaii.PushIndent(ImGui.GetStyle().IndentSpacing, false);
ImGui.Checkbox(
HellionStrings.Tabs_NotificationSound_Enable_Name,
ref tab.EnableNotificationSound
);
ImGuiUtil.HelpMarker(HellionStrings.Tabs_NotificationSound_Description);
if (tab.EnableNotificationSound)
{
if (ImGui.Button("Set to target") && target != null)
tab.TellTarget.FromTarget(target);
using var notifIndent = ImRaii.PushIndent(10.0f);
// Build a readable preview label for the currently selected sound.
var soundPreview =
tab.NotificationSoundId <= 16
? $"{HellionStrings.Tabs_NotificationSound_Option} {tab.NotificationSoundId}"
: $"{HellionStrings.Tabs_NotificationSound_CustomOption} {tab.NotificationSoundId - 16}";
using (var combo = ImRaii.Combo($"##notif-sound-{i}", soundPreview))
{
if (combo.Success)
{
for (uint s = 1; s <= 16; s++)
{
if (
ImGui.Selectable(
$"{HellionStrings.Tabs_NotificationSound_Option} {s}",
tab.NotificationSoundId == s
)
)
tab.NotificationSoundId = s;
}
ImGui.Separator();
// Bundled custom sounds (ids 17-19).
for (uint n = 1; n <= 3; n++)
{
var customId = 16 + n;
if (
ImGui.Selectable(
$"{HellionStrings.Tabs_NotificationSound_CustomOption} {n}",
tab.NotificationSoundId == customId
)
)
tab.NotificationSoundId = customId;
}
}
}
// Let the user hear the currently selected sound without waiting
// for a real message to arrive in this tab.
ImGui.SameLine();
if (
ImGuiUtil.IconButton(
FontAwesomeIcon.Play,
tooltip: HellionStrings.Tabs_NotificationSound_Preview
)
)
{
var previewId = tab.NotificationSoundId;
if (previewId <= 16)
{
Plugin.Framework.RunOnFrameworkThread(() =>
{
unsafe
{
UIGlobals.PlaySoundEffect(previewId);
}
});
}
else
{
Plugin.CustomAudioPlayer.Play(
(int)previewId - 16,
Mutable.CustomSoundVolume
);
}
}
}
// Volume is stored as a 0-1 float but shown as 0-100%.
// Same field as General → Sound; shown here for convenience.
// DragFloatVertical derives its widget ID from the label text and exposes no
// override. We inline the equivalent (text label + SetNextItemWidth + DragFloat)
// to keep an explicit ##tab-volume-{i} ID, which reads more clearly than relying
// on the surrounding PushId("tab-{i}") scope to disambiguate identical labels.
// Volume is global (Mutable.CustomSoundVolume) and applies to every tab's
// notification sound, so it is shown unconditionally — not gated by the
// per-tab EnableNotificationSound toggle.
ImGui.TextUnformatted(HellionStrings.Settings_General_CustomSoundVolume_Name);
ImGui.SetNextItemWidth(-1);
var customSoundVolumePercent = Mutable.CustomSoundVolume * 100f;
if (
ImGui.DragFloat(
$"##tab-volume-{i}",
ref customSoundVolumePercent,
1f,
0f,
100f,
$"{customSoundVolumePercent:N0}%%",
ImGuiSliderFlags.AlwaysClamp
)
)
{
Mutable.CustomSoundVolume = customSoundVolumePercent / 100f;
}
// Applies globally — same value as in General → Sound.
ImGuiUtil.HelpMarker(
HellionStrings.Settings_General_CustomSoundVolume_Description
+ "\n\n"
+ HellionStrings.Settings_Section_Tab_Volume_AllTabsHint
);
}
}
ImGui.Spacing();
// ── Sub-section: Input ────────────────────────────────────────────
if (sectionJustEntered)
ImGui.SetNextItemOpen(false);
using (
var secInput = ImRaii.TreeNode(
HellionStrings.Settings_Section_Tab_Input + $"##sec-input-{i}"
)
)
{
if (secInput.Success)
{
using var indent = ImRaii.PushIndent(ImGui.GetStyle().IndentSpacing, false);
ImGui.Checkbox(Language.Options_Tabs_NoInput, ref tab.InputDisabled);
if (!tab.InputDisabled)
{
var input =
tab.Channel?.ToChatType().Name()
?? Language.Options_Tabs_NoInputChannel;
using (
var combo = ImGuiUtil.BeginComboVertical(
Language.Options_Tabs_InputChannel,
input
)
)
{
if (combo.Success)
{
if (
ImGui.Selectable(
Language.Options_Tabs_NoInputChannel,
tab.Channel == null
)
)
tab.Channel = null;
foreach (var channel in Enum.GetValues<InputChannel>())
if (
ImGui.Selectable(
channel.ToChatType().Name(),
tab.Channel == channel
)
)
tab.Channel = channel;
}
}
var player = Plugin.ObjectTable.LocalPlayer;
if (tab.Channel == InputChannel.Tell && player != null)
{
ImGui.Checkbox(
Language.Options_Tabs_SenderMessages,
ref tab.AllSenderMessages
);
ImGuiUtil.HelpText(Language.Options_Help_SenderMessages);
var worlds = Sheets
.WorldsOnDatacenter(player)
.OrderByDescending(world => world.DataCenter.RowId)
.ThenBy(world => world.Name.ToString())
.ToList();
using (ImRaii.ItemWidth(ImGui.GetWindowWidth() / 3f))
{
ImGui.Text(Language.Options_Header_Target);
ImGui.SameLine();
var name = tab.TellTarget.Name;
if (ImGui.InputText("##targetInput", ref name, 21))
tab.TellTarget.Name = name;
ImGui.SameLine();
// Guard against an empty worlds list (character switch or sheet not yet populated)
// to avoid an out-of-bounds crash on worlds[selectedWorld].
if (worlds.Count == 0)
{
ImGui.TextDisabled("(no worlds available)");
}
else
{
var selectedWorld = worlds.FindIndex(world =>
world.RowId == tab.TellTarget.World
);
if (selectedWorld == -1)
selectedWorld = 0;
using (
var combo = ImRaii.Combo(
"###player-world",
worlds[selectedWorld].Name.ToString()
)
)
{
if (combo.Success)
{
var lastDc = worlds.First().DataCenter.RowId;
foreach (var (idx, world) in worlds.Index())
{
if (
ImGui.Selectable(
world.Name.ToString(),
selectedWorld == idx
)
)
{
selectedWorld = idx;
tab.TellTarget.World = worlds[
selectedWorld
].RowId;
}
if (lastDc == world.DataCenter.RowId)
continue;
lastDc = world.DataCenter.RowId;
ImGui.Separator();
}
}
}
}
}
var target =
(Plugin.TargetManager.SoftTarget ?? Plugin.TargetManager.Target)
as IPlayerCharacter;
using (ImRaii.Disabled(target == null))
{
if (ImGui.Button("Set to target") && target != null)
tab.TellTarget.FromTarget(target);
}
}
}
}
}
ImGuiUtil.ChannelSelector(Language.Options_Tabs_Channels, tab.SelectedChannels);
ImGuiUtil.ExtraChatSelector(
Language.Options_Tabs_ExtraChatChannels,
ref tab.ExtraChatAll,
tab.ExtraChatChannels
);
ImGui.Spacing();
// ── Sub-section: Pop-out window ───────────────────────────────────
if (sectionJustEntered)
ImGui.SetNextItemOpen(false);
using (
var secPopOut = ImRaii.TreeNode(
HellionStrings.Settings_Section_Tab_PopOut + $"##sec-popout-{i}"
)
)
{
if (secPopOut.Success)
{
using var indent = ImRaii.PushIndent(ImGui.GetStyle().IndentSpacing, false);
ImGui.Checkbox(Language.Options_Tabs_PopOut, ref tab.PopOut);
if (tab.PopOut)
{
using var _ = ImRaii.PushIndent(10.0f);
ImGui.Checkbox(
Language.Options_Tabs_IndependentOpacity,
ref tab.IndependentOpacity
);
if (tab.IndependentOpacity)
ImGuiUtil.DragFloatVertical(
Language.Options_Tabs_Opacity,
ref tab.Opacity,
0.25f,
0f,
100f,
$"{tab.Opacity:N2}%%",
ImGuiSliderFlags.AlwaysClamp
);
ImGui.Checkbox(
Language.Options_Tabs_IndependentHide,
ref tab.IndependentHide
);
if (tab.IndependentHide)
{
using var __ = ImRaii.PushIndent(10.0f);
ImGuiUtil.OptionCheckbox(
ref tab.HideDuringCutscenes,
Language.Options_HideDuringCutscenes_Name
);
ImGui.Spacing();
ImGuiUtil.OptionCheckbox(
ref tab.HideWhenNotLoggedIn,
Language.Options_HideWhenNotLoggedIn_Name
);
ImGui.Spacing();
ImGuiUtil.OptionCheckbox(
ref tab.HideWhenUiHidden,
Language.Options_HideWhenUiHidden_Name
);
ImGui.Spacing();
ImGuiUtil.OptionCheckbox(
ref tab.HideInLoadingScreens,
Language.Options_HideInLoadingScreens_Name
);
ImGui.Spacing();
ImGuiUtil.OptionCheckbox(
ref tab.HideInBattle,
Language.Options_HideInBattle_Name
);
ImGui.Spacing();
}
ImGuiUtil.OptionCheckbox(ref tab.CanMove, Language.Popout_CanMove_Name);
ImGui.Spacing();
ImGuiUtil.OptionCheckbox(ref tab.CanResize, Language.Popout_CanResize_Name);
ImGui.Spacing();
}
}
}
}
if (toRemove > -1)
@@ -1,356 +0,0 @@
using System.Numerics;
using Dalamud.Bindings.ImGui;
using Dalamud.Interface.Utility.Raii;
using HellionChat.Resources;
using HellionChat.Themes;
using HellionChat.Util;
using Microsoft.Extensions.Logging;
namespace HellionChat.Ui.SettingsTabs;
internal sealed class ThemeAndLayout : ISettingsTab
{
private Plugin Plugin { get; }
private Configuration Mutable { get; }
private readonly ILogger<ThemeAndLayout> _logger;
private string? _applyDismissedFor;
public string Name =>
HellionStrings.Settings_Card_ThemeAndLayout_Title + "###tabs-themeandlayout";
internal ThemeAndLayout(Plugin plugin, Configuration mutable, ILogger<ThemeAndLayout> logger)
{
Plugin = plugin;
Mutable = mutable;
_logger = logger;
}
public void Draw(bool changed)
{
DrawThemeSection();
ImGui.Spacing();
DrawWindowStyleSection();
ImGui.Spacing();
DrawTimestampStyleSection();
}
private void DrawThemeSection()
{
using var tree = ImRaii.TreeNode(HellionStrings.Settings_ThemeAndLayout_Theme_Heading);
if (!tree.Success)
return;
using (ImRaii.PushIndent(ImGui.GetStyle().IndentSpacing, false))
{
var registry = Plugin.ThemeRegistry;
var active = registry.Get(Mutable.Theme);
ImGui.TextUnformatted(
string.Format(HellionStrings.Settings_Themes_Active, active.Name)
);
using (ImRaii.PushColor(ImGuiCol.Text, 0xFF8FA3B5u))
ImGui.TextUnformatted(active.Author);
DrawChatColorsApplyBanner(active);
ImGui.Spacing();
ImGui.Separator();
ImGui.Spacing();
ImGui.TextUnformatted(HellionStrings.Settings_Themes_BuiltIns);
ImGui.Spacing();
DrawThemeGrid(registry.AllBuiltIns(), active.Slug);
var customs = registry.AllCustom().ToList();
if (customs.Count > 0)
{
ImGui.Spacing();
ImGui.Separator();
ImGui.Spacing();
ImGui.TextUnformatted(HellionStrings.Settings_Themes_Custom);
ImGui.Spacing();
DrawThemeGrid(customs, active.Slug);
}
ImGui.Spacing();
ImGui.Separator();
ImGui.Spacing();
if (ImGui.Button(HellionStrings.Settings_Themes_OpenFolder))
{
var dir = Path.Combine(Plugin.Interface.ConfigDirectory.FullName, "themes");
Directory.CreateDirectory(dir);
Plugin.PlatformUtil.OpenLink(dir);
}
ImGui.SameLine();
if (ImGui.Button(HellionStrings.Settings_Themes_ExportActive))
{
var dir = Path.Combine(Plugin.Interface.ConfigDirectory.FullName, "themes");
Directory.CreateDirectory(dir);
var fileName = $"{active.Slug}.export.json";
var path = Path.Combine(dir, fileName);
var json = ThemeJsonWriter.Serialize(active);
File.WriteAllText(path, json);
_logger.LogInformation($"Exported active theme '{active.Slug}' to {path}");
}
}
}
private void DrawThemeGrid(IEnumerable<Theme> themes, string activeSlug)
{
var avail = ImGui.GetContentRegionAvail();
var columns = avail.X >= 700f ? 3 : 2;
var cardWidth = (avail.X - (columns - 1) * 8f) / columns;
var cardHeight = 140f;
var list = themes.ToList();
for (var i = 0; i < list.Count; i++)
{
DrawThemeCard(list[i], activeSlug, cardWidth, cardHeight);
if ((i + 1) % columns != 0 && i != list.Count - 1)
ImGui.SameLine();
}
}
private void DrawThemeCard(Theme theme, string activeSlug, float w, float h)
{
ImGui.BeginGroup();
var isActive = string.Equals(theme.Slug, activeSlug, StringComparison.OrdinalIgnoreCase);
var cursorBefore = ImGui.GetCursorScreenPos();
var clicked = ImGui.InvisibleButton($"##theme-card-{theme.Slug}", new Vector2(w, h));
var hovered = ImGui.IsItemHovered();
var draw = ImGui.GetWindowDrawList();
var bg = ColourUtil.RgbaToAbgr(theme.Colors.WindowBg | 0xFFu);
draw.AddRectFilled(cursorBefore, cursorBefore + new Vector2(w, h), bg, 4f);
if (isActive)
{
var border = ColourUtil.RgbaToAbgr(theme.Colors.Primary);
draw.AddRect(
cursorBefore,
cursorBefore + new Vector2(w, h),
border,
4f,
ImDrawFlags.None,
2f
);
}
else if (hovered)
{
var border = ColourUtil.RgbaToAbgr(theme.Colors.PrimaryLight & 0xFFFFFF99u);
draw.AddRect(
cursorBefore,
cursorBefore + new Vector2(w, h),
border,
4f,
ImDrawFlags.None,
1f
);
}
var mockupOrigin = cursorBefore + new Vector2(12f, 12f);
var mockupSize = new Vector2(w - 24f, 60f);
ThemeMockup.Draw(mockupOrigin, mockupSize, theme);
var textColor = ColourUtil.RgbaToAbgr(theme.Colors.TextPrimary);
var mutedColor = ColourUtil.RgbaToAbgr(theme.Colors.TextMuted);
draw.AddText(cursorBefore + new Vector2(12f, 80f), textColor, theme.Name);
draw.AddText(cursorBefore + new Vector2(12f, 100f), mutedColor, theme.Author);
ImGui.EndGroup();
if (clicked)
{
Mutable.Theme = theme.Slug;
Plugin.ThemeRegistry.Switch(theme.Slug);
_applyDismissedFor = null;
}
}
private void DrawChatColorsApplyBanner(Theme active)
{
if (active.ChatColors is not { Channels.Count: > 0 } themeChatColors)
return;
if (_applyDismissedFor == active.Slug)
return;
var alreadyMatching = themeChatColors.Channels.All(kvp =>
Mutable.ChatColours.TryGetValue(kvp.Key, out var current) && current == kvp.Value
);
if (alreadyMatching)
return;
ImGui.Spacing();
var border = ColourUtil.RgbaToAbgr(active.Colors.Primary);
var bgFill = ColourUtil.RgbaToAbgr((active.Colors.Surface & 0xFFFFFF00u) | 0xCCu);
var origin = ImGui.GetCursorScreenPos();
var width = ImGui.GetContentRegionAvail().X;
var height = 64f;
var draw = ImGui.GetWindowDrawList();
draw.AddRectFilled(origin, origin + new Vector2(width, height), bgFill, 4f);
draw.AddRect(origin, origin + new Vector2(width, height), border, 4f, ImDrawFlags.None, 1f);
var textColor = ColourUtil.RgbaToAbgr(active.Colors.TextPrimary);
draw.AddText(
origin + new Vector2(12f, 10f),
textColor,
HellionStrings.Settings_Themes_ApplyChatColors_Hint
);
using (ImRaii.PushColor(ImGuiCol.Button, active.Colors.Primary))
using (ImRaii.PushColor(ImGuiCol.ButtonHovered, active.Colors.PrimaryLight))
using (ImRaii.PushColor(ImGuiCol.ButtonActive, active.Colors.PrimaryDark))
{
ImGui.SetCursorScreenPos(origin + new Vector2(12f, 32f));
if (ImGui.Button(HellionStrings.Settings_Themes_ApplyChatColors_Apply))
{
foreach (var kvp in themeChatColors.Channels)
Mutable.ChatColours[kvp.Key] = kvp.Value;
_applyDismissedFor = active.Slug;
}
}
ImGui.SameLine();
if (ImGui.Button(HellionStrings.Settings_Themes_ApplyChatColors_Keep))
{
_applyDismissedFor = active.Slug;
}
ImGui.SetCursorScreenPos(origin + new Vector2(0f, height + 8f));
ImGui.Spacing();
}
private void DrawWindowStyleSection()
{
using var tree = ImRaii.TreeNode(
HellionStrings.Settings_ThemeAndLayout_WindowStyle_Heading
);
if (!tree.Success)
return;
using (ImRaii.PushIndent(ImGui.GetStyle().IndentSpacing, false))
{
ImGui.Checkbox(Language.Options_ShowTitleBar_Name, ref Mutable.ShowTitleBar);
ImGui.Checkbox(
Language.Options_ShowPopOutTitleBar_Name,
ref Mutable.ShowPopOutTitleBar
);
ImGui.Checkbox(Language.Options_ShowHideButton_Name, ref Mutable.ShowHideButton);
ImGuiUtil.HelpMarker(Language.Options_ShowHideButton_Description);
ImGui.Checkbox(Language.Options_SidebarTabView_Name, ref Mutable.SidebarTabView);
ImGuiUtil.HelpMarker(
string.Format(Language.Options_SidebarTabView_Description, Plugin.PluginName)
);
if (Mutable.SidebarTabView)
{
var sidebarWidth = Mutable.SidebarWidth;
if (
ImGui.SliderInt(
HellionStrings.Settings_ThemeAndLayout_SidebarWidth_Name,
ref sidebarWidth,
44,
160,
$"{sidebarWidth} px"
)
)
{
Mutable.SidebarWidth = sidebarWidth;
}
ImGuiUtil.HelpMarker(
HellionStrings.Settings_ThemeAndLayout_SidebarWidth_Description
);
}
ImGui.Spacing();
ImGui.Separator();
ImGui.Spacing();
// Slider range 50-100% maps to 0.5-1.0 internally. Floor at 50% prevents
// accidentally hiding the chat background (v1.2.0 bug at WindowAlpha=0).
var opacityPercent = Mutable.WindowOpacity * 100f;
if (
ImGuiUtil.DragFloatVertical(
HellionStrings.Settings_ThemeAndLayout_WindowOpacity_Name,
ref opacityPercent,
.25f,
50f,
100f,
$"{opacityPercent:N0}%%",
ImGuiSliderFlags.AlwaysClamp
)
)
{
Mutable.WindowOpacity = opacityPercent / 100f;
}
ImGuiUtil.HelpMarker(HellionStrings.Settings_ThemeAndLayout_WindowOpacity_Description);
ImGui.Spacing();
ImGui.Separator();
ImGui.Spacing();
// Master accessibility toggle for the v1.5.4 motion work: the
// theme crossfade, the sidebar/card hover lerps and the
// unread-tab pulse all read Config.ReduceMotion and snap
// instantly when it is on.
ImGui.Checkbox(
HellionStrings.Settings_ThemeAndLayout_ReduceMotion_Name,
ref Mutable.ReduceMotion
);
ImGuiUtil.HelpMarker(HellionStrings.Settings_ThemeAndLayout_ReduceMotion_Description);
}
}
private void DrawTimestampStyleSection()
{
using var tree = ImRaii.TreeNode(
HellionStrings.Settings_ThemeAndLayout_TimestampStyle_Heading
);
if (!tree.Success)
return;
using (ImRaii.PushIndent(ImGui.GetStyle().IndentSpacing, false))
{
ImGui.Checkbox(
Language.Options_PrettierTimestamps_Name,
ref Mutable.PrettierTimestamps
);
ImGuiUtil.HelpMarker(Language.Options_PrettierTimestamps_Description);
if (Mutable.PrettierTimestamps)
{
ImGui.Checkbox(
Language.Options_MoreCompactPretty_Name,
ref Mutable.MoreCompactPretty
);
ImGuiUtil.HelpMarker(Language.Options_MoreCompactPretty_Description);
ImGui.Checkbox(
HellionStrings.Appearance_UseCompactDensity_Name,
ref Mutable.UseCompactDensity
);
ImGuiUtil.HelpMarker(HellionStrings.Appearance_UseCompactDensity_Description);
ImGui.Checkbox(
Language.Options_HideSameTimestamps_Name,
ref Mutable.HideSameTimestamps
);
ImGuiUtil.HelpMarker(Language.Options_HideSameTimestamps_Description);
}
ImGui.Checkbox(Language.Options_Use24HourClock_Name, ref Mutable.Use24HourClock);
ImGuiUtil.HelpMarker(Language.Options_Use24HourClock_Description);
}
}
}
+16 -46
View File
@@ -18,20 +18,20 @@ internal sealed class Window : ISettingsTab
Mutable = mutable;
}
public void Draw(bool changed)
public void Draw(bool sectionJustEntered)
{
DrawHideSection();
DrawHideSection(sectionJustEntered);
ImGui.Spacing();
DrawInactivityHideSection();
DrawInactivityHideSection(sectionJustEntered);
ImGui.Spacing();
DrawFrameSection();
ImGui.Spacing();
DrawTooltipsSection();
DrawFrameSection(sectionJustEntered);
}
private void DrawHideSection()
private void DrawHideSection(bool sectionJustEntered)
{
using var tree = ImRaii.TreeNode(HellionStrings.Settings_Window_Hide_Heading);
if (sectionJustEntered)
ImGui.SetNextItemOpen(false);
using var tree = ImRaii.TreeNode(HellionStrings.Settings_Section_Hide);
if (!tree.Success)
{
return;
@@ -82,9 +82,11 @@ internal sealed class Window : ISettingsTab
}
}
private void DrawInactivityHideSection()
private void DrawInactivityHideSection(bool sectionJustEntered)
{
using var tree = ImRaii.TreeNode(HellionStrings.Settings_Window_InactivityHide_Heading);
if (sectionJustEntered)
ImGui.SetNextItemOpen(false);
using var tree = ImRaii.TreeNode(HellionStrings.Settings_Section_InactivityHide);
if (!tree.Success)
{
return;
@@ -164,9 +166,11 @@ internal sealed class Window : ISettingsTab
}
}
private void DrawFrameSection()
private void DrawFrameSection(bool sectionJustEntered)
{
using var tree = ImRaii.TreeNode(HellionStrings.Settings_Window_Frame_Behaviour_Heading);
if (sectionJustEntered)
ImGui.SetNextItemOpen(false);
using var tree = ImRaii.TreeNode(HellionStrings.Settings_Section_Frame);
if (!tree.Success)
{
return;
@@ -191,38 +195,4 @@ internal sealed class Window : ISettingsTab
ImGuiUtil.HelpMarker(HellionStrings.Settings_Window_ResetPosition_Description);
}
}
private void DrawTooltipsSection()
{
using var tree = ImRaii.TreeNode(HellionStrings.Settings_Window_Tooltips_Heading);
if (!tree.Success)
{
return;
}
using (ImRaii.PushIndent(ImGui.GetStyle().IndentSpacing, false))
{
ImGui.Checkbox(
Language.Options_NativeItemTooltips_Name,
ref Mutable.NativeItemTooltips
);
ImGuiUtil.HelpMarker(
string.Format(Language.Options_NativeItemTooltips_Description, Plugin.PluginName)
);
if (Mutable.NativeItemTooltips)
{
ImGuiUtil.DragFloatVertical(
Language.Options_TooltipOffset_Name,
Language.Options_TooltipOffset_Desc,
ref Mutable.TooltipOffset,
1,
0f,
400f,
$"{Mutable.TooltipOffset:N0}px",
ImGuiSliderFlags.AlwaysClamp
);
}
}
}
}
+103
View File
@@ -0,0 +1,103 @@
using System.Collections.Generic;
using Dalamud.Game.Text.SeStringHandling.Payloads;
using HellionChat._Helpers;
namespace HellionChat.Util;
// UI-7: produces a render-only view of a chunk list with the sender's name
// reformatted per the user's WorldSuffixMode / NameFormMode. Called from
// ChatLogWindow.DrawChunks on every draw — it never mutates the input, so the
// stored message (the Sender BLOB in the DB) stays byte-for-byte unchanged and
// a later settings change reformats history too.
// Known trade-off: at non-default settings, this allocates one List<Chunk> per
// visible message per frame. Lists are small and the path is skipped at the
// neutral defaults, so GC pressure is low in practice. Accepted; noted in
// Cycle Notes.
internal static class SenderNameDisplay
{
// Returns a copy of the list with the whole ChunkSource.Sender span
// collapsed to one formatted chunk, or the original list when nothing
// should change (neutral defaults, no sender span, or a non-player sender).
internal static IReadOnlyList<Chunk> ForDisplay(IReadOnlyList<Chunk> chunks)
{
var suffixMode = Plugin.Config.WorldSuffixMode;
var formMode = Plugin.Config.NameFormMode;
// Neutral default = today's rendering. Bail before scanning so the
// common case stays free.
if (suffixMode == WorldSuffixMode.OtherWorldOnly && formMode == NameFormMode.Full)
return chunks;
// Locate the sender span. A content list has no Sender chunks and is
// returned untouched.
var first = -1;
var last = -1;
for (var i = 0; i < chunks.Count; i++)
{
if (chunks[i].Source != ChunkSource.Sender)
continue;
if (first < 0)
first = i;
last = i;
}
if (first < 0)
return chunks;
// The PlayerPayload rides on the sender chunks; a system or non-player
// sender has none and is left alone.
PlayerPayload? payload = null;
for (var i = first; i <= last; i++)
{
if (chunks[i].Link is PlayerPayload pp)
{
payload = pp;
break;
}
}
if (payload is null)
return chunks;
var worldName = payload.World.ValueNullable?.Name.ExtractText() ?? string.Empty;
// IPlayerState.HomeWorld reads AgentLobby directly without a
// framework-thread guard (reference_dalamud_framework_thread), so this
// call is safe from the draw thread.
// RowId is a value field — safe to read directly without ValueNullable, unlike the world name above.
var isHomeWorld = payload.World.RowId == Plugin.PlayerState.HomeWorld.RowId;
var formatted = SenderNameFormatter.Format(
payload.PlayerName,
worldName,
isHomeWorld,
formMode,
suffixMode
);
// Render-only copy: replace the whole sender span (name text, world
// text, and any cross-world icon) with one formatted chunk that keeps
// the PlayerPayload link so the name stays clickable. Dropping the
// original sender icon is an accepted trade-off and only happens once
// the user moves UI-7 off its defaults.
// Channel brackets and colons are ChunkSource.None wrappers outside the
// Sender span — they are preserved untouched by the copy loops below.
var copy = new List<Chunk>(chunks.Count);
for (var i = 0; i < first; i++)
copy.Add(chunks[i]);
TextChunk? styleSource = null;
for (var i = first; i <= last; i++)
{
if (chunks[i] is TextChunk tc)
{
styleSource = tc;
break;
}
}
var replacement = styleSource is not null
? styleSource.NewWithStyle(ChunkSource.Sender, payload, formatted)
: new TextChunk(ChunkSource.Sender, payload, formatted);
copy.Add(replacement);
for (var i = last + 1; i < chunks.Count; i++)
copy.Add(chunks[i]);
return copy;
}
}
+27
View File
@@ -0,0 +1,27 @@
using System.Collections.Generic;
namespace HellionChat._Helpers;
// Pure decision helper for failed-tell detection. The processed message
// stream carries no LogMessage row id, so detection happens at the
// RaptureLogModule level (see FailedTellNotifier). This POCO stays free of
// Dalamud types so the "known id AND enabled" rule is Build-Suite testable.
// TEST-MIRROR: ../../../Hellion Build test/Ui/FailedTellMatcherTests.cs
public static class FailedTellMatcher
{
// Log-message ids the game raises for a tell that could not be delivered,
// pinned from in-game discovery. 50 covers an unreachable recipient
// (offline, non-existent, or on another world); 3832 is a recipient
// inside an instance.
public static readonly IReadOnlySet<uint> FailedTellLogMessageIds = new HashSet<uint>
{
50u,
3832u,
};
public static bool ShouldNotify(
uint logMessageId,
bool notifyEnabled,
IReadOnlySet<uint> failedTellIds
) => notifyEnabled && failedTellIds.Contains(logMessageId);
}
@@ -0,0 +1,30 @@
namespace HellionChat._Helpers;
// UI-11 pure decision helper: does a message about to be sent carry a glyph
// that only renders correctly for players running HellionChat or a similar
// plugin? Those are FFXIV Private-Use-Area icon codepoints (the same range
// SeIconChar covers); a recipient without a plugin sees an empty box.
//
// Works on raw char codepoints on purpose: SeIconChar is a Dalamud type, and a
// helper that touched it could not run in the xUnit AppDomain
// (feedback_dalamud_test_isolation, point 7).
// TEST-MIRROR: ../../../Hellion Build test/Ui/PluginDisclosureScannerTests.cs
public static class PluginDisclosureScanner
{
// FFXIV packs its icon glyphs into this slice of the Unicode Private Use
// Area. The whole range is inside the BMP, so a single char per codepoint
// is enough — no surrogate-pair handling needed.
private const char PrivateUseFirst = '';
private const char PrivateUseLast = '';
public static bool ContainsPrivateUseGlyph(string text)
{
foreach (var c in text)
{
if (c >= PrivateUseFirst && c <= PrivateUseLast)
return true;
}
return false;
}
}
@@ -0,0 +1,52 @@
using System;
namespace HellionChat._Helpers;
// UI-7 pure decision helper: builds the display string for a sender's name +
// world per the user's NameFormMode / WorldSuffixMode. Dalamud-free so the
// Build Suite can cover every combination; SenderNameDisplay feeds it the name
// and world it pulled from the PlayerPayload.
// TEST-MIRROR: ../../../Hellion Build test/Ui/SenderNameFormatterTests.cs
public static class SenderNameFormatter
{
public static string Format(
string fullName,
string worldName,
bool isHomeWorld,
NameFormMode formMode,
WorldSuffixMode suffixMode
)
{
var name = FormatName(fullName, formMode);
var showWorld = suffixMode switch
{
WorldSuffixMode.Never => false,
WorldSuffixMode.Always => true,
WorldSuffixMode.OtherWorldOnly => !isHomeWorld,
_ => !isHomeWorld,
};
return showWorld && !string.IsNullOrEmpty(worldName) ? $"{name}@{worldName}" : name;
}
private static string FormatName(string fullName, NameFormMode mode)
{
if (mode == NameFormMode.Full)
return fullName;
// FFXIV character names are two words. Anything else (one word, odd
// spacing) falls back to the full name rather than risking an empty or
// misleading render.
var parts = fullName.Split(' ', StringSplitOptions.RemoveEmptyEntries);
if (parts.Length < 2)
return fullName;
return mode switch
{
NameFormMode.FirstNameOnly => parts[0],
NameFormMode.Initials => $"{parts[0][0]}. {parts[^1][0]}.",
_ => fullName,
};
}
}
+17
View File
@@ -0,0 +1,17 @@
namespace HellionChat._Helpers;
// Pure decision helper: should an incoming message play a per-tab notification
// sound? Kept Dalamud-free so the Build Suite can test the
// "inactive + enabled + global-allowed" rule in isolation.
// TEST-MIRROR: ../../../Hellion Build test/Ui/TabSoundDecisionTests.cs
public static class TabSoundDecision
{
// True only when the message landed in a tab the user is not looking at,
// that tab has its own sound switched on, and the global sound master is
// not muted.
public static bool ShouldPlay(
bool isActiveTab,
bool tabSoundEnabled,
bool globalSoundsEnabled
) => !isActiveTab && tabSoundEnabled && globalSoundsEnabled;
}
+14
View File
@@ -102,6 +102,15 @@
"resolved": "4.4.0",
"contentHash": "QX3bsK9oFeUXk8tFsc9NkI6NnCr8Ar/ex027p+ZZ/jdLCdX2RlryDtxUqZW5j45NVwn4E4Z4hzupsoMQd6Yxtg=="
},
"NAudio.WinMM": {
"type": "Direct",
"requested": "[2.2.1, )",
"resolved": "2.2.1",
"contentHash": "xFHRFwH4x6aq3IxRbewvO33ugJRvZFEOfO62i7uQJRUNW2cnu6BeBTHUS0JD5KBucZbHZaYqxQG8dwZ47ezQuQ==",
"dependencies": {
"NAudio.Core": "2.2.1"
}
},
"Pidgin": {
"type": "Direct",
"requested": "[3.5.1, 4.0.0)",
@@ -366,6 +375,11 @@
"resolved": "17.11.4",
"contentHash": "mudqUHhNpeqIdJoUx2YDWZO/I9uEDYVowan89R6wsomfnUJQk6HteoQTlNjZDixhT2B4IXMkMtgZtoceIjLRmA=="
},
"NAudio.Core": {
"type": "Transitive",
"resolved": "2.2.1",
"contentHash": "GgkdP6K/7FqXFo7uHvoqGZTJvW4z8g2IffhOO4JHaLzKCdDOUEzVKtveoZkCuUX8eV2HAINqi7VFqlFndrnz/g=="
},
"SQLitePCLRaw.bundle_e_sqlite3": {
"type": "Transitive",
"resolved": "2.1.11",
+15 -17
View File
@@ -2,7 +2,7 @@
[![Build](https://gitea.hellion-forge.cloud/JonKazama-Hellion/HellionChat/actions/workflows/build.yml/badge.svg?branch=main)](https://gitea.hellion-forge.cloud/JonKazama-Hellion/HellionChat/actions/workflows/build.yml)
[![License: EUPL-1.2](https://img.shields.io/badge/License-EUPL--1.2-blue.svg)](LICENSE)
[![Latest release](https://img.shields.io/badge/release-v1.5.4-brightgreen)](https://gitea.hellion-forge.cloud/JonKazama-Hellion/HellionChat/releases/latest)
[![Latest release](https://img.shields.io/badge/release-v1.5.6-brightgreen)](https://gitea.hellion-forge.cloud/JonKazama-Hellion/HellionChat/releases/latest)
[![Dalamud API](https://img.shields.io/badge/Dalamud-API_15-purple)](https://github.com/goatcorp/Dalamud)
[![.NET](https://img.shields.io/badge/.NET-10.0-512BD4)](https://dotnet.microsoft.com/)
[![FFXIV](https://img.shields.io/badge/FFXIV-Dawntrail-c3a37f)](https://www.finalfantasyxiv.com/)
@@ -11,7 +11,7 @@
<img src="docs/images/hellion-forge.png" alt="Hellion Forge" width="180" />
</p>
**Version 1.5.4** — Privacy-first chat plugin for FINAL FANTASY XIV / Dalamud, built on
**Version 1.5.6** — Privacy-first chat plugin for FINAL FANTASY XIV / Dalamud, built on
[Chat 2](https://github.com/Infiziert90/ChatTwo) (EUPL-1.2).
Hellion Chat is a privacy-first plugin built on the Chat 2 foundation. The majority of the engine
@@ -118,13 +118,13 @@ Deuteranopia/Protanopia-safe (red-green color blindness) based on the Wong/Okabe
- **Honorific custom titles in the chat header.** When the Honorific plugin is active and a custom
title is set, it is displayed in the chat header above the message log. Auto-detect with silent
fallback: without Honorific the slot is invisible. Toggle in Settings → Integrations → Honorific.
fallback: without Honorific the slot is invisible. Toggle in Settings → About → Extensions → Honorific.
First cycle of a multi-stage plugin integration roadmap (context menu, NotificationMaster, RP
status, ExtraChat, and XIVIM to follow).
### Pop-Out Convenience (v0.6.0)
- **Input bar in pop-out windows** as a global opt-in in Settings → Windows → Window Frame. When
- **Input bar in pop-out windows** as a global opt-in in Settings → Window → Window Frame. When
active, every pop-out window has a compact input at the bottom with a channel-colored icon button
and text field. No more switching back to the main window for a quick reply.
- **Per-pop-out independent text buffer and history cursor.** Changing channels in a pop-out works
@@ -171,7 +171,7 @@ HellionChat/
│ ├── FirstRunWizard.cs # Three-profile onboarding
│ ├── HellionStyle.cs # ImGui theme push (local and global)
│ └── SettingsTabs/
│ └── Privacy.cs # Privacy tab (filters, retention, cleanup, export)
│ └── DataAndPrivacy.cs # Data & Privacy tab (filters, retention, cleanup, export)
├── Ipc/ # IPC channels, migrated to HellionChat.* in v1.0.0
├── ChatTwoConflictDetector.cs # Blocks plugin load if upstream Chat 2 is active
├── images/
@@ -250,7 +250,7 @@ start. Order matters:
4. Add the custom repo as described above.
5. Install Hellion Chat. On first start, the configuration file and the entire database directory
are moved into the HellionChat layout.
6. **Verify** under Settings → Privacy → Refresh preview that the message count looks plausible.
6. **Verify** under Settings → Data & Privacy → Cleanup → Refresh preview that the message count looks plausible.
### Troubleshooting
@@ -299,17 +299,15 @@ An optional submission to the Dalamud main plugin repo (in addition to the custo
## Project Status
**Version 1.5.4**Polish and Motion. Theme switches now crossfade smoothly over
~300 ms across every Hellion-rendered surface — sidebar, title, buttons, tabs,
scrollbar, separators. The window background snaps deliberately so the per-window
opacity override from Dalamud's pinning menu stays intact. A new header quick-picker —
a palette button left of the cog — opens a compact popup that switches themes and tabs
without opening Settings; the active entry carries a check glyph and the popup stays
open between picks. Sidebar icons ease their opacity on hover and card-mode message
borders highlight per tab, both framerate-independent so a stalled Wine frame cannot
overshoot. A new "Reduce motion" toggle in Theme & Layout disables the crossfade, the
hover animations and the unread-tab pulse for users who prefer a static UI. No schema
bump, migration v17 stays.
**Version 1.5.6**Settings Overhaul + Filter & Notification Polish. The Settings window
has been reorganised from ten tabs to seven (General, Appearance, Chat, Window, Channels,
Data & Privacy, About). Each tab now uses collapsible sections grouped by control type;
sections start collapsed every time you enter a tab. New sender-name display options in
Chat → Messages let you control when the home world is appended and whether to show the
full name, first name only, or initials. A pre-send warning fires when a message contains
plugin-only symbols other players may see as empty boxes. The chat window now has a
separate opacity for when it is not focused. The three bundled custom notification sounds
gained a volume slider in Settings → General. All 24 locale files updated.
---
+1 -1
View File
@@ -45,7 +45,7 @@ plugin development in general.
Upstream Chat 2 (by Infi & Anna, EUPL-1.2) is the foundation and was not produced with AI
assistance. HellionChat-specific code lives in `HellionChat/Privacy/`, `HellionChat/Export/`,
`HellionChat/Resources/HellionStrings*`, `Ui/SettingsTabs/Privacy.cs`, `Ui/FirstRunWizard.cs`,
`HellionChat/Resources/HellionStrings*`, `Ui/SettingsTabs/DataAndPrivacy.cs`, `Ui/FirstRunWizard.cs`,
`Ui/HellionStyle.cs`, plus the Migrate3 recovery and plugin layout migration in `MessageStore.cs`
and `Plugin.cs`. These were developed with Pair-level assistance as described above.
+23
View File
@@ -11,6 +11,29 @@ releases as an overview and links to the release pages for details.
---
## Hellion Chat 1.5.6 — Settings Overhaul + Filter & Notification Polish (2026-05-23)
- Settings window reorganised: ten tabs down to seven (General, Appearance, Chat, Window, Channels, Data & Privacy, About). Each tab now uses collapsible sections grouped by control type. Sections start collapsed every time you open a tab — less noise, easier to find what you need.
- New sender-name display options under Chat → Messages: separate world-suffix and name-format modes (Full name / First name only / Initials × Never / Other worlds only / Always).
- Plugin-only symbols now show a pre-send warning so other players do not get empty boxes (Chat → Messages → "Warn before sending plugin-only symbols").
- Separate window opacity for focused vs. inactive chat window (Appearance → Window style → "Inactive window opacity"). The slider above sets the focused value.
- Custom notification sound volume slider (General → Sound, and mirrored in Channels → per-tab → Notification). Affects only the three bundled custom sounds; the 16 game sounds are unaffected.
- The per-tab regex filter that briefly shipped earlier in this cycle has been removed — FFXIV's built-in blackword filter covers the same need.
- All 24 locale files updated for the new section labels and the v1.5.6 control labels (machine translation; native review continues via the Hellion Forge Discord).
---
## Hellion Chat 1.5.5 — Upstream-Sync Tab-Features (2026-05-21)
A backlog-sync cycle. Inherited tab items: a failed-tell warning toast, per-tab
notification sounds (16 game sounds or three bundled Hellion sounds with a
preview button), an auto-focusing 512-character tab rename, a jump-to-latest
button in the chat log header, and map-flag / item-link insertion from the chat
input. Plus the Hellion Forge fox banner becomes a real image. Schema bumped to
v18, additive fields only, no data migration.
---
## Hellion Chat 1.5.4 — Polish and Motion (2026-05-20)
A polish cycle of three P3 items. Theme switches now crossfade smoothly over ~300 ms
+20
View File
@@ -0,0 +1,20 @@
# Third-Party Asset Credits
## Bundled Notification Sounds
- **notification-1.wav, notification-2.wav, notification-3.wav**
Creator: Universfield
Source: [Pixabay](https://pixabay.com/users/universfield-28281460/)
License: Pixabay Content License (royalty-free, commercial use permitted)
## Branding
- **Fox banner image** (`fox-banner.png`)
Creator: InklyTattooDesigns (Etsy)
License: Royalty-free for commercial and logo use
## Libraries
- **NAudio** - Copyright (c) Mark Heath
License: MIT
Source: <https://github.com/naudio/NAudio>
+45 -8
View File
@@ -12,16 +12,54 @@ be a poor fit for the plugin's privacy-first scope during brainstorming.
## Next Cycle
**Plugin Integrations Wave 2-6** (Context-Menu, NotificationMaster, Moodles, ExtraChat, XIVIM
Quick-DM) is the next planned scope. The UiBuilder first-frame HITCH investigation that v1.5.1
queued is now closed as a side effect of v1.5.3's font-stack fix — HITCH dropped from ~74 ms into
the 15-25 ms range. The Wine/Linux scroll-rubber-band spike remains at the tail.
**v1.5.7 — Ad-Block / Spam-Filter** is the next planned scope: the hybrid ad-block and
spam-filter cycle, combining a lightweight built-in filter with optional `NoSoliciting`
IPC integration. Plugin Integrations Wave 2-6 (Context-Menu, NotificationMaster, Moodles,
ExtraChat, XIVIM Quick-DM) follows.
Native-speaker review of the AI-assisted v1.5.3 translations (13 legacy Crowdin locales) runs in
parallel as a continuous correction pass, gathered via the Hellion Forge Discord.
---
## v1.5.6 — Settings Overhaul + Filter & Notification Polish (released 2026-05-23)
Settings window reorganised from ten tabs to seven (General, Appearance, Chat, Window,
Channels, Data & Privacy, About). Each tab uses collapsible sections grouped by control
type; sections start collapsed on every tab-open.
Delivered from the originally-planned v1.5.5b bundle:
- **UI-7** — Sender-name display options: world-suffix mode (Never / Other worlds only / Always)
and name-format mode (Full name / First name only / Initials). Lives in Chat → Messages.
- **UI-11** — Pre-send warning when a message contains plugin-only symbols. Toggle in
Chat → Messages.
- **UI-12** — Separate window opacity for focused vs. inactive chat window. New slider in
Appearance → Window style.
- **AUDIO-1** — Custom notification sound volume slider. General → Sound, mirrored in
Channels → per-tab → Notification. Affects only the three bundled custom sounds.
- ~~**UI-8**~~**GESTRICHEN**: per-tab regex filter. Removed because FFXIV's built-in
blackword filter covers the same need.
All 24 locale files updated for new section labels and v1.5.6 control labels (machine
translation; native review via Hellion Forge Discord).
---
## v1.5.5 — Upstream-Sync Tab-Features (released 2026-05-21)
A backlog-sync cycle of inherited tab-feature items. Failed tells now raise a warning toast when a
message could not be delivered (recipient offline, in an instance, or blocking you), toggleable in
Settings. Per-tab notification sounds let each tab play one of the 16 game chat sounds or three
bundled Hellion sounds when a message arrives on a background tab, with a preview button. The tab
rename field in the right-click menu auto-focuses on open and accepts up to 512 characters. A
jump-to-latest button appears in the chat log header while scrolled up from the live end.
Map-flag and item-link insertion is available from the chat input right-click menu. The Hellion
Forge fox banner in the first-run wizard and the Information tab is now a real image instead of
ASCII art. Schema bumped to v18, additive fields only, no data migration.
---
## v1.5.4 — Polish and Motion (released 2026-05-20)
A polish cycle of three P3 items. Theme switches crossfade over ~300 ms across every
@@ -377,7 +415,7 @@ deferred in favour of the theme engine — both items live on in the mid-term bl
- **Regex Tab Routing** — route plugin output spam into dedicated tabs, auto-sort tells from
specific people. Clearly scoped against ad-block: routing sorts into views, blocking hides
globally.
- **Auto-Detect Duties** — tab switch on duty start via condition flag.
- ~~**Auto-Detect Duties**~~ — dropped in v1.5.6 cycle: the effort (a render-gate in the tab-bar / tab-sidebar draw plus resolving what happens to the active tab when it is hidden) outweighs the practical benefit. Removed from backlog.
- **UX Bundle** — vertical tab bar as a layout option, Shift+Mousewheel to scroll tab headers
without activating them, global hotkey to close the active tab.
- **Configure Tab Title** — configurable tab title format (name / name + abbreviated world / full
@@ -390,10 +428,9 @@ deferred in favour of the theme engine — both items live on in the mid-term bl
with the current channel colour.
- **Plugin-Disclosure Pre-Send Filter** — configurable word/regex list blocks sending with a
pre-send confirmation. Protects against accidentally mentioning plugins in public channels.
- **Chat Clear on Name Change** — on character name change, migrate or wipe local history; default
is wipe for maximum privacy.
- ~~**Chat Clear on Name Change**~~ — dropped in v1.5.6 cycle: would require tracking the character against a stored prior state, which conflicts with the privacy-plugin identity; the desired effect already exists because HellionChat keeps history per character identity, so there is no functional gap. Removed from backlog.
- **Hide Plugin Window on NG+ Screen** — extend hide logic to cover additional addon names.
- **Kick from Novice Network** — mentor niche; context menu entry with confirmation.
- ~~**Kick from Novice Network**~~ — dropped in v1.5.6 cycle: no accessible IPC surface found for Novice Network membership check or kick action; not feasible without a risky memory scan. Removed from backlog.
- **Text-to-Speech for /tell** — incoming tells via TTS, optionally per sender, with channel filter
and mute-in-combat. Low priority.
+6 -6
View File
File diff suppressed because one or more lines are too long