Skip to content

Commit

Permalink
[i18n] Gérer les traductions de listes de référence en SQL (et C#)
Browse files Browse the repository at this point in the history
Fixes #174
  • Loading branch information
gideruette committed Apr 16, 2024
1 parent 9007e98 commit cd51621
Show file tree
Hide file tree
Showing 22 changed files with 331 additions and 5 deletions.
5 changes: 5 additions & 0 deletions TopModel.Generator.Core/GeneratorConfigBase.cs
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,11 @@ public abstract class GeneratorConfigBase
public string Language { get; set; }
#nullable enable

/// <summary>
/// Si les libellés des listes de références doivent être traduits.
/// </summary>
public bool? TranslateReferences { get; set; }

/// <summary>
/// Générateurs désactivés.
/// </summary>
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 @@ -75,6 +75,11 @@
"type": "string",
"description": "Racine du répertoire de génération."
},
"translateReferences": {
"type": "boolean",
"description": "Si les libellés des listes de références 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
4 changes: 2 additions & 2 deletions TopModel.Generator.Javascript/JavascriptResourceGenerator.cs
Original file line number Diff line number Diff line change
Expand Up @@ -147,10 +147,10 @@ private void WriteClasseNode(FileWriter fw, IGrouping<IPropertyContainer, IField
fw.Write(indentLevel + 1, $"{Quote(property.NameCamel)}: ");
fw.Write($@"""{translation}""");
fw.WriteLine(container.Count() == i++ && !(_modelConfig.I18n.TranslateReferences && container.Key is Class { DefaultProperty: not null, Enum: true } && ((container.Key as Class)?.Values.Any() ?? false)) ? string.Empty : ",");
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 (_modelConfig.I18n.TranslateReferences && container.Key is Class { DefaultProperty: not null, Enum: true } classe && (classe?.Values.Any() ?? false))
if ((Config.TranslateReferences ?? true) && container.Key is Class { DefaultProperty: not null, Enum: true } classe && (classe?.Values.Any() ?? false))
{
i = 1;
fw.WriteLine(indentLevel + 1, @$"{Quote("values")}: {{");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -173,7 +173,7 @@ private void WriteReferenceValues(FileWriter fw, Class reference)
{
fw.WriteLine(" {");
fw.Write(" ");
fw.Write(string.Join(",\n ", refValue.Value.Where(p => p.Value != "null").Select(property => $"{property.Key.NameCamel}: {(Config.GetImplementation(property.Key.Domain)?.Type == "string" ? @$"""{(_modelConfig.I18n.TranslateReferences && property.Key == property.Key.Class.DefaultProperty ? refValue.ResourceKey : property.Value)}""" : @$"{property.Value}")}")));
fw.Write(string.Join(",\n ", refValue.Value.Where(p => p.Value != "null").Select(property => $"{property.Key.NameCamel}: {(Config.GetImplementation(property.Key.Domain)?.Type == "string" ? @$"""{((Config.TranslateReferences ?? true) && property.Key == property.Key.Class.DefaultProperty ? refValue.ResourceKey : property.Value)}""" : @$"{property.Value}")}")));
fw.WriteLine();
fw.WriteLine(" },");
}
Expand Down
2 changes: 1 addition & 1 deletion TopModel.Generator.Jpa/JpaModelConstructorGenerator.cs
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ public void WriteEnumConstructor(JavaWriter fw, Class classe, List<Class> availa
value = _config.GetType(prop) + "." + value;
}

if (modelConfig.I18n.TranslateReferences && classe.DefaultProperty == prop && !_config.CanClassUseEnums(classe, prop: prop))
if ((_config.TranslateReferences ?? true) && classe.DefaultProperty == prop && !_config.CanClassUseEnums(classe, prop: prop))
{
value = refValue.ResourceKey;
}
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 @@ -60,6 +60,11 @@
"type": "string",
"description": "Racine du répertoire de génération."
},
"translateReferences": {
"type": "boolean",
"description": "Si les libellés des listes de références 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 @@ -57,6 +57,11 @@
"type": "string",
"description": "Racine du répertoire de génération."
},
"translateReferences": {
"type": "boolean",
"description": "Si les libellés des listes de références 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
Original file line number Diff line number Diff line change
Expand Up @@ -203,7 +203,7 @@ protected static string CheckIdentifierLength(string identifier)
definition.TryGetValue(property, out var value);
nameValueDict[property.SqlName] = _config.GetValue(property, availableClasses, value);

if (_modelConfig.I18n.TranslateReferences && modelClass.DefaultProperty == property && !_config.CanClassUseEnums(modelClass, prop: property))
if ((_config.TranslateReferences ?? true) && modelClass.DefaultProperty == property && !_config.CanClassUseEnums(modelClass, prop: property))
{
nameValueDict[property.SqlName] = $@"""{initItem.ResourceKey}""";
}
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 @@ -43,6 +43,11 @@
"type": "string",
"description": "Racine du répertoire de génération."
},
"translateReferences": {
"type": "boolean",
"description": "Si les libellés des listes de références 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 @@ -37,6 +37,11 @@
"type": "string",
"description": "Racine du répertoire de génération."
},
"translateReferences": {
"type": "boolean",
"description": "Si les libellés des listes de références 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
4 changes: 4 additions & 0 deletions TopModel.Generator/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -267,6 +267,10 @@ void HandleFile(FileInfo file)

genConfig.ExcludedTags = excludedTags;
genConfig.InitVariables(config.App, number);
if (genConfig.TranslateReferences == null)
{
genConfig.TranslateReferences = config.I18n.TranslateReferences;
}

ModelUtils.TrimSlashes(genConfig, c => c.OutputDirectory);
ModelUtils.CombinePath(dn, genConfig, c => c.OutputDirectory);
Expand Down
29 changes: 29 additions & 0 deletions samples/generators/angular/topmodel.config.schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -163,6 +163,11 @@
"type": "string",
"description": "Racine du répertoire de génération."
},
"translateReferences": {
"type": "boolean",
"description": "Si les libellés des listes de références 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 @@ -547,6 +552,11 @@
"type": "string",
"description": "Racine du répertoire de génération."
},
"translateReferences": {
"type": "boolean",
"description": "Si les libellés des listes de références 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 @@ -612,6 +622,15 @@
"type": "string",
"description": "Localisation des ressources, relative au répertoire de génération."
},
"resourcesEncoding": {
"type": "string",
"description": "Encodage des fichiers de resource.",
"default": "Latin1",
"enum": [
"Latin1",
"UTF8"
]
},
"useJdbc": {
"type": "boolean",
"description": "Générer les entités en mode JDBC",
Expand Down Expand Up @@ -763,6 +782,11 @@
"type": "string",
"description": "Racine du répertoire de génération."
},
"translateReferences": {
"type": "boolean",
"description": "Si les libellés des listes de références 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 @@ -901,6 +925,11 @@
"type": "string",
"description": "Racine du répertoire de génération."
},
"translateReferences": {
"type": "boolean",
"description": "Si les libellés des listes de références 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
29 changes: 29 additions & 0 deletions samples/generators/csharp/topmodel.config.schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -163,6 +163,11 @@
"type": "string",
"description": "Racine du répertoire de génération."
},
"translateReferences": {
"type": "boolean",
"description": "Si les libellés des listes de références 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 @@ -547,6 +552,11 @@
"type": "string",
"description": "Racine du répertoire de génération."
},
"translateReferences": {
"type": "boolean",
"description": "Si les libellés des listes de références 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 @@ -612,6 +622,15 @@
"type": "string",
"description": "Localisation des ressources, relative au répertoire de génération."
},
"resourcesEncoding": {
"type": "string",
"description": "Encodage des fichiers de resource.",
"default": "Latin1",
"enum": [
"Latin1",
"UTF8"
]
},
"useJdbc": {
"type": "boolean",
"description": "Générer les entités en mode JDBC",
Expand Down Expand Up @@ -763,6 +782,11 @@
"type": "string",
"description": "Racine du répertoire de génération."
},
"translateReferences": {
"type": "boolean",
"description": "Si les libellés des listes de références 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 @@ -901,6 +925,11 @@
"type": "string",
"description": "Racine du répertoire de génération."
},
"translateReferences": {
"type": "boolean",
"description": "Si les libellés des listes de références 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
29 changes: 29 additions & 0 deletions samples/generators/database/topmodel.config.schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -163,6 +163,11 @@
"type": "string",
"description": "Racine du répertoire de génération."
},
"translateReferences": {
"type": "boolean",
"description": "Si les libellés des listes de références 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 @@ -547,6 +552,11 @@
"type": "string",
"description": "Racine du répertoire de génération."
},
"translateReferences": {
"type": "boolean",
"description": "Si les libellés des listes de références 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 @@ -612,6 +622,15 @@
"type": "string",
"description": "Localisation des ressources, relative au répertoire de génération."
},
"resourcesEncoding": {
"type": "string",
"description": "Encodage des fichiers de resource.",
"default": "Latin1",
"enum": [
"Latin1",
"UTF8"
]
},
"useJdbc": {
"type": "boolean",
"description": "Générer les entités en mode JDBC",
Expand Down Expand Up @@ -763,6 +782,11 @@
"type": "string",
"description": "Racine du répertoire de génération."
},
"translateReferences": {
"type": "boolean",
"description": "Si les libellés des listes de références 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 @@ -901,6 +925,11 @@
"type": "string",
"description": "Racine du répertoire de génération."
},
"translateReferences": {
"type": "boolean",
"description": "Si les libellés des listes de références 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
29 changes: 29 additions & 0 deletions samples/generators/focus/topmodel.config.schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -163,6 +163,11 @@
"type": "string",
"description": "Racine du répertoire de génération."
},
"translateReferences": {
"type": "boolean",
"description": "Si les libellés des listes de références 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 @@ -547,6 +552,11 @@
"type": "string",
"description": "Racine du répertoire de génération."
},
"translateReferences": {
"type": "boolean",
"description": "Si les libellés des listes de références 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 @@ -612,6 +622,15 @@
"type": "string",
"description": "Localisation des ressources, relative au répertoire de génération."
},
"resourcesEncoding": {
"type": "string",
"description": "Encodage des fichiers de resource.",
"default": "Latin1",
"enum": [
"Latin1",
"UTF8"
]
},
"useJdbc": {
"type": "boolean",
"description": "Générer les entités en mode JDBC",
Expand Down Expand Up @@ -763,6 +782,11 @@
"type": "string",
"description": "Racine du répertoire de génération."
},
"translateReferences": {
"type": "boolean",
"description": "Si les libellés des listes de références 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 @@ -901,6 +925,11 @@
"type": "string",
"description": "Racine du répertoire de génération."
},
"translateReferences": {
"type": "boolean",
"description": "Si les libellés des listes de références 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: 2 additions & 0 deletions samples/generators/jpa/topmodel.config
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
app: topmodel.jpa.sample.demo
modelRoot: ../../model
lockFileName: jpa.topmodel.lock
i18n:
rootPath: "{lang}"
jpa:
- tags:
- back
Expand Down
Loading

0 comments on commit cd51621

Please sign in to comment.