96fa05dc9b
The inherited Translators tree node was rendered under the upstream `Options_About_Translators` label and could be misread as "people who translated Hellion Chat". The list is in fact the Chat 2 community Crowdin contributors and covers the inherited upstream strings only — the Hellion-specific strings live in HellionStrings.<lang>.resx and are maintained by the Hellion Online Media maintainer (currently EN + DE; other locales are not yet covered). Add a Localization block right above the tree node that spells this out, and rename the tree node label to "Chat 2 community translators (upstream)" so the attribution is unambiguous.
127 lines
5.6 KiB
C#
Executable File
127 lines
5.6 KiB
C#
Executable File
using System.Numerics;
|
||
using ChatTwo.Resources;
|
||
using ChatTwo.Util;
|
||
using Dalamud.Interface;
|
||
using Dalamud.Interface.Colors;
|
||
using Dalamud.Interface.Utility;
|
||
using Dalamud.Interface.Utility.Raii;
|
||
using Dalamud.Bindings.ImGui;
|
||
|
||
namespace ChatTwo.Ui.SettingsTabs;
|
||
|
||
internal sealed class About : ISettingsTab
|
||
{
|
||
public string Name => string.Format(Language.Options_About_Tab, Plugin.PluginName) + "###tabs-about";
|
||
|
||
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()
|
||
{
|
||
Translators.Sort((a, b) => string.Compare(a.ToLowerInvariant(), b.ToLowerInvariant(), StringComparison.Ordinal));
|
||
}
|
||
|
||
public void Draw(bool changed)
|
||
{
|
||
using var wrap = ImRaii.TextWrapPos(0.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"))
|
||
Dalamud.Utility.Util.OpenLink("https://github.com/JonKazama-Hellion/HellionChat/issues");
|
||
|
||
ImGuiHelpers.ScaledDummy(10.0f);
|
||
|
||
// Hellion-specific maintainer / attribution / license / SE-
|
||
// disclaimer block. Hand-rolled in English here rather than via
|
||
// HellionStrings — the legal-ish copy stays close to the EUPL-1.2
|
||
// wording and the SE disclaimer is the same in every locale.
|
||
ImGui.TextColored(ImGuiColors.ParsedGold, "Maintainer");
|
||
ImGui.TextUnformatted("Hellion Chat is maintained by Hellion Online Media (Florian Wathling).");
|
||
ImGui.TextUnformatted("Website:");
|
||
ImGui.SameLine();
|
||
if (ImGuiUtil.IconButton(FontAwesomeIcon.ExternalLinkAlt, "hellionMedia"))
|
||
Dalamud.Utility.Util.OpenLink("https://hellion-media.de");
|
||
ImGui.TextUnformatted("For licensing, legal or contact inquiries please reach out via the website above.");
|
||
|
||
ImGuiHelpers.ScaledDummy(10.0f);
|
||
|
||
ImGui.TextColored(ImGuiColors.ParsedGold, "Built on Chat 2");
|
||
ImGui.TextUnformatted("Hellion Chat is a fork of Chat 2 by Infi and Anna (ascclemens).");
|
||
ImGui.TextUnformatted("Every chat replacement feature, the IPC integration, the rendering engine and the storage core come from upstream Chat 2.");
|
||
ImGui.TextUnformatted("Upstream repository:");
|
||
ImGui.SameLine();
|
||
if (ImGuiUtil.IconButton(FontAwesomeIcon.ExternalLinkAlt, "chatTwoUpstream"))
|
||
Dalamud.Utility.Util.OpenLink("https://github.com/Infiziert90/ChatTwo");
|
||
|
||
ImGuiHelpers.ScaledDummy(10.0f);
|
||
|
||
ImGui.TextColored(ImGuiColors.ParsedGold, "License");
|
||
ImGui.TextUnformatted("Hellion Chat and Chat 2 are licensed under the European Union Public License v1.2 (EUPL-1.2).");
|
||
ImGui.TextUnformatted("© 2023–2026 the Chat 2 authors (Infi, Anna and the upstream contributors).");
|
||
ImGui.TextUnformatted("© 2026 Hellion Online Media — for the Hellion Chat additions.");
|
||
|
||
ImGuiHelpers.ScaledDummy(10.0f);
|
||
|
||
ImGui.TextColored(ImGuiColors.DalamudOrange, "FINAL FANTASY XIV disclaimer");
|
||
ImGui.TextUnformatted("FINAL FANTASY XIV © SQUARE ENIX CO., LTD. All rights reserved.");
|
||
ImGui.TextUnformatted("Hellion Chat is an unofficial, fan-made plugin and is not affiliated with, endorsed, sponsored or approved by Square Enix.");
|
||
|
||
ImGui.Spacing();
|
||
|
||
ImGui.TextColored(ImGuiColors.ParsedGold, "Localization");
|
||
ImGui.TextUnformatted("German translations of Hellion-specific UI strings (HellionStrings.de.resx) are written by the Hellion Online Media maintainer.");
|
||
ImGui.TextUnformatted("All other locales for Hellion-specific strings are not currently provided.");
|
||
ImGui.TextUnformatted("The translator list below covers the upstream Chat 2 community translators on Crowdin — their work covers the inherited Chat 2 strings, not the Hellion additions.");
|
||
|
||
ImGui.Spacing();
|
||
|
||
var height = ImGui.GetContentRegionAvail().Y - ImGui.CalcTextSize("A").Y - ImGui.GetStyle().ItemSpacing.Y * 2;
|
||
using (var aboutChild = ImRaii.Child("about", new Vector2(-1, height)))
|
||
{
|
||
if (aboutChild)
|
||
{
|
||
using var treeNode = ImRaii.TreeNode("Chat 2 community translators (upstream)");
|
||
if (treeNode)
|
||
{
|
||
using var translatorChild = ImRaii.Child("translators");
|
||
if (translatorChild)
|
||
{
|
||
foreach (var translator in Translators)
|
||
ImGui.TextUnformatted(translator);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
ImGui.Spacing();
|
||
}
|
||
}
|