Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Extraction de labelMale* et labelFemale* par Notes/scripts/update-wordinfo.sh #241

Open
b606 opened this issue Dec 3, 2018 · 4 comments

Comments

@b606
Copy link
Contributor

b606 commented Dec 3, 2018

L'objectif est de pouvoir accorder les phrases de Keyed/Incidents.xml pour <AnimalInsanitySingle> et <LetterAnimalSelfTameAndName>. Notamment, les mots "autruche", "boomalope", "dinde", "gazelle", "mégaraignée", "panthère", "tortue", "vache" sont toujours au féminin. D'autres comme "écureuil" ou "bébé" sont toujours au masculin (le "neutre" du français).

En utilisant ANIMAL_gender on a des incohérences :

  • "Un tortue local est devenu enragé. Il attaquera à vue n'importe qui." quand il s'agit de tortue mâle.
  • "Une tortue locale est devenue enragée. Elle attaquera à vue n'importe qui." pour tortue femelle.

L'idée est d'utiliser 0_gender (basé sur WordInfo/Gender/{Male,Female}.txt) au lieu d'utiliser ANIMAL_gender. D'après quelques tests, j'obtiens

  • "Une tortue locale est devenue enragée. Elle attaquera à vue n'importe qui." que ce soit pour tortue mâle ou femelle.
  • Par contre, on obtient aussi "Un chatte local est devenu enragé. Il attaquera à vue n'importe qui.", parce que le mot "chatte" n'est pas encore dans WordInfo/Gender/Female.txt. Apparemment par défaut, les mots qui n'y sont pas sont "masculins".

0_gender marche donc bien à condition que les mots ci-dessus et les DefInjected/PawnKindDef/Races_Animal*.xml/labelFemale et labelFemalePlural soient dans WordInfo/Gender/Female.txt.

Je suis en train de modifier Notes/scripts/update-wordinfo.sh dans la branche https://github.com/Ludeon/RimWorld-fr/tree/animal-epicene mais j'ai l'mpression que c'est plus profond que cela. Ce script enlève les mots ajoutés manuellement dans WordInfo/Gender, ce qui annule automatiquement les modifications dans le commit 1d78928 parce que ces mots ne sont pas documentés en labelFemalePlural (On avait shunté ces labels la plupart du temps)

Il faudrait donc apparemment :

  • soit, rajouter tous les labelMale* ou labelFemale* dans PawnKindDef,
    car sinon ces mots ne seront pas mis dans WordInfo. Dans ce cas, en plus des labels de base <X.label> et <X.labelPlural>
    • les mots toujours féminins auront deux labelFemale{,Plural}
    • les mots toujours masculins auront deux labelMale{,Plural}
    • les autres auront les quatres label{Male,Female}{,Plural}.
      C'est bourrin et çà nécessite de modifier tous les DefInjected/PawnKindDef/Races_Animal*.xml (y compris bébé, juvénile etc), mais au moins ce serait fait une fois pour toute. C'est peut-être faisable par un script.
  • soit, modifier le script pour garder les mots rajoutés à la main

Question : est-ce que quelqu'un aurait une solution plus élégante ?
😃

@Adirelle
Copy link
Contributor

Adirelle commented Dec 9, 2018

Si j'ai bien compris, il faut inclure systématiquement les DefInjected/PawnKindDef/Races_Animal*.xml/labelFemale et labelFemalePlural dans WordInfo/Gender/Female.txt ?

@b606
Copy link
Contributor Author

b606 commented Dec 9, 2018

Bonjour,
Effectivement labelFemale, labelFemalePlural et labelMale, labelMalePlural doivent être inclus systematiquement pour pouvoir détecter le genre du mot indépendamment du genre de ANIMAL_gender.

Cependant, je me suis rendu compte que même ainsi çà ne résoud pas tout : çà marche pour <AnimalInsanitySingle> mais pas pour <*SelfTame*>.

Il faudrait jeter un oeil sur le code de RimWorld pour en être sûr, mais je pense que c'est parce que l'argument {0} de ces tags ne sont pas les mêmes :

  • Pour <AnimalInsanitySingle> l'argument {0} est un X_labelShort (ex. "tortue") et {0}_gender donne "Female" quand le mot est dans WordInfo.
  • Pour <*SelfTame*>, l'argument {0} est un X_indefinite (ex. "un tortue" quand c'est une tortue mâle), et c'est mort. Je ne vois pas de solution côté xml pour ce tag, à part peut-être leur demander de mettre aussi un X_labelShort ici (je ne sais pas ce que cela implique pour les autres langages...)

@b606
Copy link
Contributor Author

b606 commented Feb 29, 2020

J'ai remis à jour Core/WordInfo/Gender/Male,Female.txt pour tenir compte des nouveaux objets/animaux.

@b606
Copy link
Contributor Author

b606 commented Mar 12, 2020

Autre cas RW1.1, venant d'u texte d'un objet d'art :

Terrorisme de un gazelle
Ce sarcophage est gravé d'une œuvre illustrant un gazelle appréciant la performance
de Casiane Kosel avec un sourire satisfait. Il y a une ambiance joyeuse dans l'air.
Cette figure raconte l'histoire de le gazelle assistant au concert de Kosel,
le 8e décemvier 5491.

Ici, la gazelle mâle est marquée le gazelle ou un gazelle dans ANYPAWN_{nameDef,nameIndef} et ATTENDER_{nameDef,nameIndef}.

  • Le mot gazelle est déjà mis dans WordInfo/Gender/Female.txt et pas dans WordInfo/Gender/Male.txt.
  • Dans Core/DefInjected/PawnKindDef/Races_Animal_Arid.xml, il n'y a pas de <Gazelle.labelMale>.

Le cas inverse se présente avec les mots toujours masculins. Une solution possible est de changer le LanguageWorker.cs en mettant des règles d'exception dans

public override string WithIndefiniteArticle(string str, Gender gender, bool plural = false, bool name = false)
public override string WithDefiniteArticle(string str, Gender gender, bool plural = false, bool name = false)

Extrait du grammar log :

  ANYPAWN_nameFull-><color=#D09B61FF>un gazelle</color>
  ANYPAWN_label-><color=#D09B61FF>gazelle</color>
  ANYPAWN_definite-><color=#D09B61FF>le gazelle</color>
  ANYPAWN_nameDef-><color=#D09B61FF>le gazelle</color>
  ANYPAWN_indefinite-><color=#D09B61FF>un gazelle</color>
  ANYPAWN_nameIndef-><color=#D09B61FF>un gazelle</color>
  ANYPAWN_pronoun->il
  ANYPAWN_possessive->son
  ANYPAWN_objective->lui
  ANYPAWN_kind->gazelle
  ANYPAWN_age->7
  ANYPAWN_chronologicalAge->7
  ANYPAWN_relationInfo->
  ATTENDER_nameFull-><color=#D09B61FF>un gazelle</color>
  ATTENDER_label-><color=#D09B61FF>gazelle</color>
  ATTENDER_definite-><color=#D09B61FF>le gazelle</color>
  ATTENDER_nameDef-><color=#D09B61FF>le gazelle</color>
  ATTENDER_indefinite-><color=#D09B61FF>un gazelle</color>
  ATTENDER_nameIndef-><color=#D09B61FF>un gazelle</color>
  ATTENDER_pronoun->il
  ATTENDER_possessive->son
  ATTENDER_objective->lui
  ATTENDER_kind->gazelle
  ATTENDER_age->7
  ATTENDER_chronologicalAge->7
  ATTENDER_relationInfo->
  ANYPAWN_nameFull-><color=#D09B61FF>un gazelle</color>
  ANYPAWN_label-><color=#D09B61FF>gazelle</color>
  ANYPAWN_definite-><color=#D09B61FF>le gazelle</color>
  ANYPAWN_nameDef-><color=#D09B61FF>le gazelle</color>
  ANYPAWN_indefinite-><color=#D09B61FF>un gazelle</color>
  ANYPAWN_nameIndef-><color=#D09B61FF>un gazelle</color>
  ANYPAWN_pronoun->il
  ANYPAWN_possessive->son
  ANYPAWN_objective->lui
  ANYPAWN_kind->gazelle
  ANYPAWN_age->7
  ANYPAWN_chronologicalAge->7
  ANYPAWN_relationInfo->

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants