Skip to content

Commit

Permalink
[i18n] Ajout de la propriété TranslateLabels
Browse files Browse the repository at this point in the history
Fixes #174
  • Loading branch information
gideruette committed Apr 17, 2024
1 parent 397f0f4 commit 0349369
Show file tree
Hide file tree
Showing 25 changed files with 348 additions and 23 deletions.
5 changes: 5 additions & 0 deletions TopModel.Core/Model/I18nConfig.cs
Original file line number Diff line number Diff line change
Expand Up @@ -26,4 +26,9 @@ public class I18nConfig
/// Si les libellés des listes de références doivent être traduits.
/// </summary>
public bool TranslateReferences { get; set; } = true;

/// <summary>
/// Si les libellés des propriétés doivent être traduits.
/// </summary>
public bool TranslateLabels { get; set; } = true;
}
1 change: 1 addition & 0 deletions TopModel.Generator.Core/GeneratorBase.cs
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ protected GeneratorBase(ILogger logger)

protected IEnumerable<Class> Classes => Files
.SelectMany(f => f.Value.Classes.Where(c => Config.Tags.Intersect(c.Tags).Any()))
.Where(c => c.Values.Any() && (Config.TranslateReferences ?? true) || (Config.TranslateLabels ?? true))
.Distinct();

protected virtual bool PersistentOnly => false;
Expand Down
5 changes: 5 additions & 0 deletions TopModel.Generator.Core/GeneratorConfigBase.cs
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,11 @@ public abstract class GeneratorConfigBase
/// </summary>
public bool? TranslateReferences { get; set; }

/// <summary>
/// Si les libellés des propriétés doivent être traduits.
/// </summary>
public bool? TranslateLabels { get; set; }

/// <summary>
/// Générateurs désactivés.
/// </summary>
Expand Down
3 changes: 2 additions & 1 deletion TopModel.Generator.Core/TranslationGeneratorBase.cs
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,8 @@ public TranslationGeneratorBase(ILogger<TranslationGeneratorBase<T>> logger, Tra
.Where(c => c.Tags.Contains(tag))
.SelectMany(c => c.Properties.OfType<IFieldProperty>());

return properties.SelectMany(p => GetResourceFileNames(p, tag))
return properties
.SelectMany(p => GetResourceFileNames(p, tag))
.Concat(properties.SelectMany(p => GetCommentResourceFileNames(p, tag)))
.Concat(GetMainResourceFileNames(tag))
.Select(p => p.FilePath);
Expand Down
5 changes: 5 additions & 0 deletions TopModel.Generator.Csharp/csharp.config.json
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,11 @@
"description": "Si les libellés des listes de références doivent être traduits.",
"default": "true"
},
"translateLabels": {
"type": "boolean",
"description": "Si les libellés des propriétés doivent être traduits.",
"default": "true"
},
"ignoreDefaultValues": {
"type": "boolean",
"description": "Désactive la génération des valeurs par défaut des propriétés dans les classes et endpoints générés avec cette configuration."
Expand Down
2 changes: 1 addition & 1 deletion TopModel.Generator.Javascript/GeneratorRegistration.cs
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ public void Register(IServiceCollection services, JavascriptConfig config, int n
}
}

if (config.ResourceRootPath != null)
if (config.ResourceRootPath != null && (config.TranslateLabels ?? true) || (config.TranslateReferences ?? true))
{
services.AddGenerator<JavascriptResourceGenerator, JavascriptConfig>(config, number);
}
Expand Down
25 changes: 14 additions & 11 deletions TopModel.Generator.Javascript/JavascriptResourceGenerator.cs
Original file line number Diff line number Diff line change
Expand Up @@ -134,20 +134,23 @@ private void WriteClasseNode(FileWriter fw, IGrouping<IPropertyContainer, IField
fw.WriteLine(indentLevel, $"{Quote(container.Key.NameCamel)}: {{");

var i = 1;
foreach (var property in container.OrderBy(p => p.NameCamel, StringComparer.Ordinal))
if (Config.TranslateLabels ?? true)
{
var translation = isComment
? property.CommentResourceProperty.Comment.Replace(Environment.NewLine, " ").Replace("\"", "'")
: _translationStore.GetTranslation(property, lang);
if (translation == string.Empty)
foreach (var property in container.OrderBy(p => p.NameCamel, StringComparer.Ordinal))
{
translation = property.Name;
}
var translation = isComment
? property.CommentResourceProperty.Comment.Replace(Environment.NewLine, " ").Replace("\"", "'")
: _translationStore.GetTranslation(property, lang);

if (translation == string.Empty)
{
translation = property.Name;
}

fw.Write(indentLevel + 1, $"{Quote(property.NameCamel)}: ");
fw.Write($@"""{translation}""");
fw.WriteLine(container.Count() == i++ && !((Config.TranslateReferences ?? true) && container.Key is Class { DefaultProperty: not null, Enum: true } && ((container.Key as Class)?.Values.Any() ?? false)) ? string.Empty : ",");
fw.Write(indentLevel + 1, $"{Quote(property.NameCamel)}: ");
fw.Write($@"""{translation}""");
fw.WriteLine(container.Count() == i++ && !((Config.TranslateReferences ?? true) && container.Key is Class { DefaultProperty: not null, Enum: true } && ((container.Key as Class)?.Values.Any() ?? false)) ? string.Empty : ",");
}
}

if ((Config.TranslateReferences ?? true) && container.Key is Class { DefaultProperty: not null, Enum: true } classe && (classe?.Values.Any() ?? false))
Expand Down
36 changes: 29 additions & 7 deletions TopModel.Generator.Javascript/TypescriptDefinitionGenerator.cs
Original file line number Diff line number Diff line change
Expand Up @@ -196,11 +196,25 @@ protected override void HandleClass(string fileName, Class classe, string tag)
fw.WriteLine($" defaultValue: {defaultValue},");
}

fw.WriteLine($" label: \"{field.ResourceKey}\"{(Config.GenerateComments ? "," : string.Empty)}");
if (Config.TranslateLabels ?? true)
{
fw.WriteLine($" label: \"{field.ResourceKey}\"{(Config.GenerateComments ? "," : string.Empty)}");
}
else
{
fw.WriteLine($" label: \"{field.Label}\"{(Config.GenerateComments ? "," : string.Empty)}");
}

if (Config.GenerateComments)
{
fw.WriteLine($" comment: \"{field.CommentResourceKey}\"");
if (Config.TranslateLabels ?? true)
{
fw.WriteLine($" comment: \"{field.Comment}\"");
}
else
{
fw.WriteLine($" comment: \"{field.CommentResourceKey}\"");
}
}
}
else if (property is CompositionProperty cp3 && cp3.Domain != null && !Config.IsListComposition(cp3))
Expand All @@ -212,11 +226,19 @@ protected override void HandleClass(string fileName, Class classe, string tag)
fw.Write(cp3.Domain.Name);
fw.Write(",\r\n isRequired: true");
fw.Write(",\r\n label: \"");
fw.Write(classe.Namespace.ModuleCamel);
fw.Write(".");
fw.Write(classe.NameCamel);
fw.Write(".");
fw.Write(property.NameCamel);
if (Config.TranslateLabels ?? true)
{
fw.Write(classe.Namespace.ModuleCamel);
fw.Write(".");
fw.Write(classe.NameCamel);
fw.Write(".");
fw.Write(property.NameCamel);
}
else
{
fw.Write(property.Label);
}

fw.Write("\"\r\n");
}
else if (property is CompositionProperty cp2 && cp2.Composition.Name != classe.Name)
Expand Down
5 changes: 5 additions & 0 deletions TopModel.Generator.Javascript/javascript.config.json
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,11 @@
"description": "Si les listes de référence doivent être traduites",
"default": "true"
},
"translateLabels": {
"type": "boolean",
"description": "Si les libellés des propriétés doivent être traduits",
"default": "true"
},
"generateComments": {
"type": "boolean",
"description": "Ajoute les commentaires dans les entités JS générées."
Expand Down
9 changes: 6 additions & 3 deletions TopModel.Generator.Jpa/JpaResourceGenerator.cs
Original file line number Diff line number Diff line change
Expand Up @@ -65,11 +65,14 @@ protected override void HandleResourceFile(string filePath, string lang, IEnumer
/// <param name="container">Classe.</param>
private void WriteClasse(FileWriter fw, IGrouping<IPropertyContainer, IFieldProperty> container, string lang)
{
foreach (var property in container)
if (Config.TranslateLabels ?? true)
{
if (property.Label != null)
foreach (var property in container)
{
fw.WriteLine($"{property.ResourceKey}={_translationStore.GetTranslation(property, lang)}");
if (property.Label != null)
{
fw.WriteLine($"{property.ResourceKey}={_translationStore.GetTranslation(property, lang)}");
}
}
}

Expand Down
5 changes: 5 additions & 0 deletions TopModel.Generator.Jpa/jpa.config.json
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,11 @@
"description": "Si les libellés des listes de références doivent être traduits.",
"default": "true"
},
"translateLabels": {
"type": "boolean",
"description": "Si les libellés des propriétés doivent être traduits.",
"default": "true"
},
"ignoreDefaultValues": {
"type": "boolean",
"description": "Désactive la génération des valeurs par défaut des propriétés dans les classes et endpoints générés avec cette configuration."
Expand Down
5 changes: 5 additions & 0 deletions TopModel.Generator.Php/php.config.json
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,11 @@
"description": "Si les libellés des listes de références doivent être traduits.",
"default": "true"
},
"translateLabels": {
"type": "boolean",
"description": "Si les libellés des propriétés doivent être traduits.",
"default": "true"
},
"ignoreDefaultValues": {
"type": "boolean",
"description": "Désactive la génération des valeurs par défaut des propriétés dans les classes et endpoints générés avec cette configuration."
Expand Down
5 changes: 5 additions & 0 deletions TopModel.Generator.Sql/sql.config.json
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,11 @@
"description": "Si les libellés des listes de références doivent être traduits.",
"default": "true"
},
"translateLabels": {
"type": "boolean",
"description": "Si les libellés des propriétés doivent être traduits.",
"default": "true"
},
"ignoreDefaultValues": {
"type": "boolean",
"description": "Désactive la génération des valeurs par défaut des propriétés dans les classes et endpoints générés avec cette configuration."
Expand Down
5 changes: 5 additions & 0 deletions TopModel.Generator.Translation/translation.config.json
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,11 @@
"description": "Si les libellés des listes de références doivent être traduits.",
"default": "true"
},
"translateLabels": {
"type": "boolean",
"description": "Si les libellés des propriétés doivent être traduits.",
"default": "true"
},
"ignoreDefaultValues": {
"type": "boolean",
"description": "Désactive la génération des valeurs par défaut des propriétés dans les classes et endpoints générés avec cette configuration."
Expand Down
5 changes: 5 additions & 0 deletions TopModel.Generator/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -272,6 +272,11 @@ void HandleFile(FileInfo file)
genConfig.TranslateReferences = config.I18n.TranslateReferences;
}

if (genConfig.TranslateLabels == null)
{
genConfig.TranslateLabels = config.I18n.TranslateLabels;
}

ModelUtils.TrimSlashes(genConfig, c => c.OutputDirectory);
ModelUtils.CombinePath(dn, genConfig, c => c.OutputDirectory);

Expand Down
25 changes: 25 additions & 0 deletions samples/generators/angular/topmodel.config.schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -168,6 +168,11 @@
"description": "Si les libellés des listes de références doivent être traduits.",
"default": "true"
},
"translateLabels": {
"type": "boolean",
"description": "Si les libellés des propriétés doivent être traduits.",
"default": "true"
},
"ignoreDefaultValues": {
"type": "boolean",
"description": "Désactive la génération des valeurs par défaut des propriétés dans les classes et endpoints générés avec cette configuration."
Expand Down Expand Up @@ -465,6 +470,11 @@
"description": "Si les listes de référence doivent être traduites",
"default": "true"
},
"translateLabels": {
"type": "boolean",
"description": "Si les libellés des propriétés doivent être traduits",
"default": "true"
},
"generateComments": {
"type": "boolean",
"description": "Ajoute les commentaires dans les entités JS générées."
Expand Down Expand Up @@ -557,6 +567,11 @@
"description": "Si les libellés des listes de références doivent être traduits.",
"default": "true"
},
"translateLabels": {
"type": "boolean",
"description": "Si les libellés des propriétés doivent être traduits.",
"default": "true"
},
"ignoreDefaultValues": {
"type": "boolean",
"description": "Désactive la génération des valeurs par défaut des propriétés dans les classes et endpoints générés avec cette configuration."
Expand Down Expand Up @@ -787,6 +802,11 @@
"description": "Si les libellés des listes de références doivent être traduits.",
"default": "true"
},
"translateLabels": {
"type": "boolean",
"description": "Si les libellés des propriétés doivent être traduits.",
"default": "true"
},
"ignoreDefaultValues": {
"type": "boolean",
"description": "Désactive la génération des valeurs par défaut des propriétés dans les classes et endpoints générés avec cette configuration."
Expand Down Expand Up @@ -930,6 +950,11 @@
"description": "Si les libellés des listes de références doivent être traduits.",
"default": "true"
},
"translateLabels": {
"type": "boolean",
"description": "Si les libellés des propriétés doivent être traduits.",
"default": "true"
},
"ignoreDefaultValues": {
"type": "boolean",
"description": "Désactive la génération des valeurs par défaut des propriétés dans les classes et endpoints générés avec cette configuration."
Expand Down
25 changes: 25 additions & 0 deletions samples/generators/csharp/topmodel.config.schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -168,6 +168,11 @@
"description": "Si les libellés des listes de références doivent être traduits.",
"default": "true"
},
"translateLabels": {
"type": "boolean",
"description": "Si les libellés des propriétés doivent être traduits.",
"default": "true"
},
"ignoreDefaultValues": {
"type": "boolean",
"description": "Désactive la génération des valeurs par défaut des propriétés dans les classes et endpoints générés avec cette configuration."
Expand Down Expand Up @@ -465,6 +470,11 @@
"description": "Si les listes de référence doivent être traduites",
"default": "true"
},
"translateLabels": {
"type": "boolean",
"description": "Si les libellés des propriétés doivent être traduits",
"default": "true"
},
"generateComments": {
"type": "boolean",
"description": "Ajoute les commentaires dans les entités JS générées."
Expand Down Expand Up @@ -557,6 +567,11 @@
"description": "Si les libellés des listes de références doivent être traduits.",
"default": "true"
},
"translateLabels": {
"type": "boolean",
"description": "Si les libellés des propriétés doivent être traduits.",
"default": "true"
},
"ignoreDefaultValues": {
"type": "boolean",
"description": "Désactive la génération des valeurs par défaut des propriétés dans les classes et endpoints générés avec cette configuration."
Expand Down Expand Up @@ -787,6 +802,11 @@
"description": "Si les libellés des listes de références doivent être traduits.",
"default": "true"
},
"translateLabels": {
"type": "boolean",
"description": "Si les libellés des propriétés doivent être traduits.",
"default": "true"
},
"ignoreDefaultValues": {
"type": "boolean",
"description": "Désactive la génération des valeurs par défaut des propriétés dans les classes et endpoints générés avec cette configuration."
Expand Down Expand Up @@ -930,6 +950,11 @@
"description": "Si les libellés des listes de références doivent être traduits.",
"default": "true"
},
"translateLabels": {
"type": "boolean",
"description": "Si les libellés des propriétés doivent être traduits.",
"default": "true"
},
"ignoreDefaultValues": {
"type": "boolean",
"description": "Désactive la génération des valeurs par défaut des propriétés dans les classes et endpoints générés avec cette configuration."
Expand Down
Loading

0 comments on commit 0349369

Please sign in to comment.