Skip to content

Commit

Permalink
Add more helpful localization error output
Browse files Browse the repository at this point in the history
Replace textblock with readonly textbox in invalid definitions view
  • Loading branch information
bcssov committed Apr 30, 2020
1 parent 2655000 commit 059ec88
Show file tree
Hide file tree
Showing 5 changed files with 15 additions and 11 deletions.
11 changes: 7 additions & 4 deletions src/IronyModManager.Parser/Generic/LocalizationParser.cs
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,7 @@ public override IEnumerable<IDefinition> Parse(ParserArgs args)
var result = new List<IDefinition>();
var errors = new List<string>();
string selectedLanguage = string.Empty;
string prevId = string.Empty;
foreach (var line in args.Lines)
{
if (string.IsNullOrWhiteSpace(line) || line.Trim().StartsWith(Common.Constants.Scripts.ScriptCommentId))
Expand All @@ -108,13 +109,14 @@ public override IEnumerable<IDefinition> Parse(ParserArgs args)
{
if (string.IsNullOrWhiteSpace(lang))
{
var message = ValidateKey(line);
var message = ValidateKey(line, prevId);
if (string.IsNullOrWhiteSpace(message))
{
var def = GetDefinitionInstance();
MapDefinitionFromArgs(ConstructArgs(args, def, typeOverride: $"{selectedLanguage}-{Common.Constants.YmlType}"));
def.Code = $"{selectedLanguage}:{Environment.NewLine}{line}";
def.Id = codeParser.GetKey(line, Common.Constants.Localization.YmlSeparator.ToString());
prevId = def.Id;
def.ValueType = Common.ValueType.SpecialVariable;
result.Add(def);
}
Expand Down Expand Up @@ -149,20 +151,21 @@ protected virtual string GetLanguageId(string line)
/// Validates the key.
/// </summary>
/// <param name="line">The line.</param>
/// <param name="previousKey">The previous key.</param>
/// <returns>System.String.</returns>
protected virtual string ValidateKey(string line)
protected virtual string ValidateKey(string line, string previousKey)
{
var cleaned = codeParser.CleanWhitespace(line);
if (!cleaned.Contains(Common.Constants.Localization.YmlSeparator.ToString(), StringComparison.OrdinalIgnoreCase))
{
return $"Missing separator on line: {line}.";
return $"Missing separator near key: {previousKey}.";
}
else
{
var key = cleaned.Split(Common.Constants.Localization.YmlSeparator)[0].Trim();
if (!keyRegex.IsMatch(key))
{
return $"Line contains invalid characters in key: {key}.";
return $"Line contains invalid characters in key: {key}";
}
}
return string.Empty;
Expand Down
4 changes: 2 additions & 2 deletions src/IronyModManager/Localization/de.json
Original file line number Diff line number Diff line change
Expand Up @@ -86,8 +86,8 @@
},
"InvalidConflicts": {
"Name": "Ungültig",
"Error": "Fehler in Zeile: {Line} Spalte: {Column} Datei: {File}. Bitte melde diesen Fehler dem Autor des Mods: {ModName}.{NewLine}{NewLine}Fehlermeldung lautet:{NewLine}{NewLine}{Message}",
"ErrorNoLine": "Fehler in der Datei: {File}. Bitte melde diesen Fehler dem Autor des Mods: {ModName}.{NewLine}{NewLine}Die Fehlermeldung lautet:{NewLine}{NewLine}{Message}"
"Error": "Fehler in Zeile: {Line} Spalte: {Column} Datei: {File}.{NewLine}Bitte melde diesen Fehler dem Autor des Mods: {ModName}.{NewLine}{NewLine}Fehlermeldung lautet:{NewLine}{NewLine}{Message}",
"ErrorNoLine": "Fehler in der Datei: {File}.{NewLine}Bitte melde diesen Fehler dem Autor des Mods: {ModName}.{NewLine}{NewLine}Die Fehlermeldung lautet:{NewLine}{NewLine}{Message}"
},
"ContextMenu": {
"CopyAll": "Kopiere alles",
Expand Down
4 changes: 2 additions & 2 deletions src/IronyModManager/Localization/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -86,8 +86,8 @@
},
"InvalidConflicts": {
"Name": "Invalid",
"Error": "Error at line: {Line} column: {Column} file: {File}. Please report this error to the author of the mod: {ModName}.{NewLine}{NewLine}Error message says:{NewLine}{NewLine}{Message}",
"ErrorNoLine": "Error at file: {File}. Please report this error to the author of the mod: {ModName}.{NewLine}{NewLine}Error message says:{NewLine}{NewLine}{Message}"
"Error": "Error at line: {Line} column: {Column} file: {File}.{NewLine}Please report this error to the author of the mod: {ModName}.{NewLine}{NewLine}Error message says:{NewLine}{NewLine}{Message}",
"ErrorNoLine": "Error at file: {File}.{NewLine}Please report this error to the author of the mod: {ModName}.{NewLine}{NewLine}Error message says:{NewLine}{NewLine}{Message}"
},
"ContextMenu": {
"CopyAll": "Copy All",
Expand Down
4 changes: 2 additions & 2 deletions src/IronyModManager/Localization/hr.json
Original file line number Diff line number Diff line change
Expand Up @@ -86,8 +86,8 @@
},
"InvalidConflicts": {
"Name": "Nevažeći",
"Error": "Pogreška u retku: {Line} stupac: {Column} datoteka: {File}. Prijavite ovu pogrešku autoru mod-a: {ModName}.{NewLine}{NewLine}Poruka o pogrešci kaže:{NewLine}{NewLine}{Message}",
"ErrorNoLine": "Pogreška u datoteci: {Line} stupac: {Column} datoteka: {File}. Prijavite ovu pogrešku autoru mod-a: {ModName}.{NewLine}{NewLine}Poruka o pogrešci kaže:{NewLine}{NewLine}{Message}"
"Error": "Pogreška u retku: {Line} stupac: {Column} datoteka: {File}.{NewLine}Prijavite ovu pogrešku autoru mod-a: {ModName}.{NewLine}{NewLine}Poruka o pogrešci kaže:{NewLine}{NewLine}{Message}",
"ErrorNoLine": "Pogreška u datoteci: {Line} stupac: {Column} datoteka: {File}.{NewLine}Prijavite ovu pogrešku autoru mod-a: {ModName}.{NewLine}{NewLine}Poruka o pogrešci kaže:{NewLine}{NewLine}{Message}"
},
"ContextMenu": {
"CopyAll": "Kopiraj sve",
Expand Down
3 changes: 2 additions & 1 deletion src/IronyModManager/Views/MainConflictSolverControlView.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,8 @@
</Grid>
</Panel>
<Panel Grid.Row="0" Grid.Column="1" Grid.RowSpan="2" IsVisible="{Binding !IsConflictSolverAvailable}">
<TextBlock TextWrapping="Wrap" Text="{Binding SelectedConflict.Key}" Margin="10,0"></TextBlock>
<TextBox TextWrapping="Wrap" Text="{Binding SelectedConflict.Key}" Margin="10,0,20,10"
IsReadOnly="True" ScrollViewer.HorizontalScrollBarVisibility="Auto"></TextBox>
</Panel>
<ContentControl IsVisible="{Binding IsBinaryViewerVisible}" Margin="10" Grid.Row="1" Grid.Column="1" Content="{Binding BinaryMergeViewer}"></ContentControl>
<ContentControl IsVisible="{Binding IsMergeViewerVisible}" Margin="10" Grid.Row="1" Grid.Column="1" Content="{Binding MergeViewer}"></ContentControl>
Expand Down

0 comments on commit 059ec88

Please sign in to comment.