mirror of
https://github.com/MindWorkAI/AI-Studio.git
synced 2026-02-12 13:01:37 +00:00
Improved I18N key handling and text localization
This commit is contained in:
parent
530b5f6cf8
commit
c49cc9f1e6
@ -69,7 +69,10 @@ public sealed partial class CollectI18NKeysCommand
|
|||||||
|
|
||||||
var ns = this.DetermineNamespace(filePath);
|
var ns = this.DetermineNamespace(filePath);
|
||||||
var fileInfo = new FileInfo(filePath);
|
var fileInfo = new FileInfo(filePath);
|
||||||
var name = fileInfo.Name.Replace(fileInfo.Extension, string.Empty).Replace(".razor", string.Empty);
|
|
||||||
|
var name = this.DetermineTypeName(filePath)
|
||||||
|
?? fileInfo.Name.Replace(fileInfo.Extension, string.Empty).Replace(".razor", string.Empty);
|
||||||
|
|
||||||
var langNamespace = $"{ns}.{name}".ToUpperInvariant();
|
var langNamespace = $"{ns}.{name}".ToUpperInvariant();
|
||||||
foreach (var match in matches)
|
foreach (var match in matches)
|
||||||
{
|
{
|
||||||
@ -236,6 +239,14 @@ public sealed partial class CollectI18NKeysCommand
|
|||||||
Console.WriteLine($"- Error: The file '{filePath}' is neither a C# nor a Razor file. We can't determine the namespace.");
|
Console.WriteLine($"- Error: The file '{filePath}' is neither a C# nor a Razor file. We can't determine the namespace.");
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private string? DetermineTypeName(string filePath)
|
||||||
|
{
|
||||||
|
if (!filePath.EndsWith(".cs", StringComparison.OrdinalIgnoreCase))
|
||||||
|
return null;
|
||||||
|
|
||||||
|
return this.ReadPartialTypeNameFromCSharp(filePath);
|
||||||
|
}
|
||||||
|
|
||||||
private string? ReadNamespaceFromCSharp(string filePath)
|
private string? ReadNamespaceFromCSharp(string filePath)
|
||||||
{
|
{
|
||||||
@ -254,6 +265,24 @@ public sealed partial class CollectI18NKeysCommand
|
|||||||
var match = matches[0];
|
var match = matches[0];
|
||||||
return match.Groups[1].Value;
|
return match.Groups[1].Value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private string? ReadPartialTypeNameFromCSharp(string filePath)
|
||||||
|
{
|
||||||
|
var content = File.ReadAllText(filePath, Encoding.UTF8);
|
||||||
|
var matches = CSharpPartialTypeRegex().Matches(content);
|
||||||
|
|
||||||
|
if (matches.Count == 0)
|
||||||
|
return null;
|
||||||
|
|
||||||
|
if (matches.Count > 1)
|
||||||
|
{
|
||||||
|
Console.WriteLine($"The file '{filePath}' contains multiple partial type declarations. This scenario is not supported.");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
var match = matches[0];
|
||||||
|
return match.Groups[1].Value;
|
||||||
|
}
|
||||||
|
|
||||||
private string? ReadNamespaceFromRazor(string filePath)
|
private string? ReadNamespaceFromRazor(string filePath)
|
||||||
{
|
{
|
||||||
@ -278,4 +307,7 @@ public sealed partial class CollectI18NKeysCommand
|
|||||||
|
|
||||||
[GeneratedRegex("""namespace\s+([a-zA-Z0-9_.]+)""")]
|
[GeneratedRegex("""namespace\s+([a-zA-Z0-9_.]+)""")]
|
||||||
private static partial Regex CSharpNamespaceRegex();
|
private static partial Regex CSharpNamespaceRegex();
|
||||||
}
|
|
||||||
|
[GeneratedRegex("""\bpartial\s+(?:class|struct|interface|record(?:\s+(?:class|struct))?)\s+([A-Za-z_][A-Za-z0-9_]*)""")]
|
||||||
|
private static partial Regex CSharpPartialTypeRegex();
|
||||||
|
}
|
||||||
|
|||||||
@ -6211,23 +6211,23 @@ UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::PANDOCAVAILABILITYSERVICE::T18544701
|
|||||||
-- Pandoc may be required for importing files.
|
-- Pandoc may be required for importing files.
|
||||||
UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::PANDOCAVAILABILITYSERVICE::T2596465560"] = "Pandoc may be required for importing files."
|
UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::PANDOCAVAILABILITYSERVICE::T2596465560"] = "Pandoc may be required for importing files."
|
||||||
|
|
||||||
-- Failed to delete the API key due to an API issue.
|
-- Failed to delete the secret data due to an API issue.
|
||||||
UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::RUSTSERVICE::APIKEYS::T3658273365"] = "Failed to delete the API key due to an API issue."
|
UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::RUSTSERVICE::T2303057928"] = "Failed to delete the secret data due to an API issue."
|
||||||
|
|
||||||
-- Failed to get the API key due to an API issue.
|
|
||||||
UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::RUSTSERVICE::APIKEYS::T3875720022"] = "Failed to get the API key due to an API issue."
|
|
||||||
|
|
||||||
-- Successfully copied the text to your clipboard
|
-- Successfully copied the text to your clipboard
|
||||||
UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::RUSTSERVICE::CLIPBOARD::T3351807428"] = "Successfully copied the text to your clipboard"
|
UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::RUSTSERVICE::T3351807428"] = "Successfully copied the text to your clipboard"
|
||||||
|
|
||||||
|
-- Failed to delete the API key due to an API issue.
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::RUSTSERVICE::T3658273365"] = "Failed to delete the API key due to an API issue."
|
||||||
|
|
||||||
-- Failed to copy the text to your clipboard.
|
-- Failed to copy the text to your clipboard.
|
||||||
UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::RUSTSERVICE::CLIPBOARD::T3724548108"] = "Failed to copy the text to your clipboard."
|
UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::RUSTSERVICE::T3724548108"] = "Failed to copy the text to your clipboard."
|
||||||
|
|
||||||
-- Failed to delete the secret data due to an API issue.
|
-- Failed to get the API key due to an API issue.
|
||||||
UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::RUSTSERVICE::SECRETS::T2303057928"] = "Failed to delete the secret data due to an API issue."
|
UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::RUSTSERVICE::T3875720022"] = "Failed to get the API key due to an API issue."
|
||||||
|
|
||||||
-- Failed to get the secret data due to an API issue.
|
-- Failed to get the secret data due to an API issue.
|
||||||
UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::RUSTSERVICE::SECRETS::T4007657575"] = "Failed to get the secret data due to an API issue."
|
UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::RUSTSERVICE::T4007657575"] = "Failed to get the secret data due to an API issue."
|
||||||
|
|
||||||
-- No update found.
|
-- No update found.
|
||||||
UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::UPDATESERVICE::T1015418291"] = "No update found."
|
UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::UPDATESERVICE::T1015418291"] = "No update found."
|
||||||
|
|||||||
@ -6214,22 +6214,22 @@ UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::PANDOCAVAILABILITYSERVICE::T18544701
|
|||||||
UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::PANDOCAVAILABILITYSERVICE::T2596465560"] = "Zum Importieren von Dateien kann Pandoc erforderlich sein."
|
UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::PANDOCAVAILABILITYSERVICE::T2596465560"] = "Zum Importieren von Dateien kann Pandoc erforderlich sein."
|
||||||
|
|
||||||
-- Failed to delete the API key due to an API issue.
|
-- Failed to delete the API key due to an API issue.
|
||||||
UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::RUSTSERVICE::APIKEYS::T3658273365"] = "Das API-Schlüssel konnte aufgrund eines API-Problems nicht gelöscht werden."
|
UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::RUSTSERVICE::T3658273365"] = "Das API-Schlüssel konnte aufgrund eines API-Problems nicht gelöscht werden."
|
||||||
|
|
||||||
-- Failed to get the API key due to an API issue.
|
-- Failed to get the API key due to an API issue.
|
||||||
UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::RUSTSERVICE::APIKEYS::T3875720022"] = "Der API-Schlüssel konnte aufgrund eines API-Problems nicht abgerufen werden."
|
UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::RUSTSERVICE::T3875720022"] = "Der API-Schlüssel konnte aufgrund eines API-Problems nicht abgerufen werden."
|
||||||
|
|
||||||
-- Successfully copied the text to your clipboard
|
-- Successfully copied the text to your clipboard
|
||||||
UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::RUSTSERVICE::CLIPBOARD::T3351807428"] = "Der Text wurde erfolgreich in die Zwischenablage kopiert."
|
UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::RUSTSERVICE::T3351807428"] = "Der Text wurde erfolgreich in die Zwischenablage kopiert."
|
||||||
|
|
||||||
-- Failed to copy the text to your clipboard.
|
-- Failed to copy the text to your clipboard.
|
||||||
UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::RUSTSERVICE::CLIPBOARD::T3724548108"] = "Der Text konnte nicht in die Zwischenablage kopiert werden."
|
UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::RUSTSERVICE::T3724548108"] = "Der Text konnte nicht in die Zwischenablage kopiert werden."
|
||||||
|
|
||||||
-- Failed to delete the secret data due to an API issue.
|
-- Failed to delete the secret data due to an API issue.
|
||||||
UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::RUSTSERVICE::SECRETS::T2303057928"] = "Das Löschen der geheimen Daten ist aufgrund eines API-Problems fehlgeschlagen."
|
UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::RUSTSERVICE::T2303057928"] = "Das Löschen der geheimen Daten ist aufgrund eines API-Problems fehlgeschlagen."
|
||||||
|
|
||||||
-- Failed to get the secret data due to an API issue.
|
-- Failed to get the secret data due to an API issue.
|
||||||
UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::RUSTSERVICE::SECRETS::T4007657575"] = "Abrufen der geheimen Daten aufgrund eines API-Problems fehlgeschlagen."
|
UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::RUSTSERVICE::T4007657575"] = "Abrufen der geheimen Daten aufgrund eines API-Problems fehlgeschlagen."
|
||||||
|
|
||||||
-- No update found.
|
-- No update found.
|
||||||
UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::UPDATESERVICE::T1015418291"] = "Kein Update gefunden."
|
UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::UPDATESERVICE::T1015418291"] = "Kein Update gefunden."
|
||||||
|
|||||||
@ -6214,22 +6214,22 @@ UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::PANDOCAVAILABILITYSERVICE::T18544701
|
|||||||
UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::PANDOCAVAILABILITYSERVICE::T2596465560"] = "Pandoc may be required for importing files."
|
UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::PANDOCAVAILABILITYSERVICE::T2596465560"] = "Pandoc may be required for importing files."
|
||||||
|
|
||||||
-- Failed to delete the API key due to an API issue.
|
-- Failed to delete the API key due to an API issue.
|
||||||
UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::RUSTSERVICE::APIKEYS::T3658273365"] = "Failed to delete the API key due to an API issue."
|
UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::RUSTSERVICE::T3658273365"] = "Failed to delete the API key due to an API issue."
|
||||||
|
|
||||||
-- Failed to get the API key due to an API issue.
|
-- Failed to get the API key due to an API issue.
|
||||||
UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::RUSTSERVICE::APIKEYS::T3875720022"] = "Failed to get the API key due to an API issue."
|
UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::RUSTSERVICE::T3875720022"] = "Failed to get the API key due to an API issue."
|
||||||
|
|
||||||
-- Successfully copied the text to your clipboard
|
-- Successfully copied the text to your clipboard
|
||||||
UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::RUSTSERVICE::CLIPBOARD::T3351807428"] = "Successfully copied the text to your clipboard"
|
UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::RUSTSERVICE::T3351807428"] = "Successfully copied the text to your clipboard"
|
||||||
|
|
||||||
-- Failed to copy the text to your clipboard.
|
-- Failed to copy the text to your clipboard.
|
||||||
UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::RUSTSERVICE::CLIPBOARD::T3724548108"] = "Failed to copy the text to your clipboard."
|
UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::RUSTSERVICE::T3724548108"] = "Failed to copy the text to your clipboard."
|
||||||
|
|
||||||
-- Failed to delete the secret data due to an API issue.
|
-- Failed to delete the secret data due to an API issue.
|
||||||
UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::RUSTSERVICE::SECRETS::T2303057928"] = "Failed to delete the secret data due to an API issue."
|
UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::RUSTSERVICE::T2303057928"] = "Failed to delete the secret data due to an API issue."
|
||||||
|
|
||||||
-- Failed to get the secret data due to an API issue.
|
-- Failed to get the secret data due to an API issue.
|
||||||
UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::RUSTSERVICE::SECRETS::T4007657575"] = "Failed to get the secret data due to an API issue."
|
UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::RUSTSERVICE::T4007657575"] = "Failed to get the secret data due to an API issue."
|
||||||
|
|
||||||
-- No update found.
|
-- No update found.
|
||||||
UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::UPDATESERVICE::T1015418291"] = "No update found."
|
UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::UPDATESERVICE::T1015418291"] = "No update found."
|
||||||
|
|||||||
@ -16,4 +16,5 @@
|
|||||||
- Fixed a bug with local transcription providers by handling errors correctly when the local provider is unavailable.
|
- Fixed a bug with local transcription providers by handling errors correctly when the local provider is unavailable.
|
||||||
- Fixed a bug with local transcription providers by correctly handling empty model IDs.
|
- Fixed a bug with local transcription providers by correctly handling empty model IDs.
|
||||||
- Fixed a bug affecting the transcription preview: previously, when you stopped music or other media, recorded or dictated text, and then tried to resume playback, the media wouldn’t resume as expected. This behavior is now fixed.
|
- Fixed a bug affecting the transcription preview: previously, when you stopped music or other media, recorded or dictated text, and then tried to resume playback, the media wouldn’t resume as expected. This behavior is now fixed.
|
||||||
- Fixed a rare bug that occurred when multiple threads tried to manage the same chat thread.
|
- Fixed a rare bug that occurred when multiple threads tried to manage the same chat thread.
|
||||||
|
- Fixed a bug that prevented text localization from certain source code files under specific conditions.
|
||||||
Loading…
Reference in New Issue
Block a user