8000 [Conjugation, Epic] Add functionality to switch conjugation views · Issue #268 · scribe-org/Scribe-Android · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

[Conjugation, Epic] Add functionality to switch conjugation views #268

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

Open
2 of 10 tasks
andrewtavis opened this issue Dec 15, 2024 · 28 comments · May be fixed by #391
Open
2 of 10 tasks

[Conjugation, Epic] Add functionality to switch conjugation views #268

andrewtavis opened this issue Dec 15, 2024 · 28 comments · May be fixed by #391
Assignees
Labels
help wanted Extra attention is needed

Comments

@andrewtavis
Copy link
Member
andrewtavis commented Dec 15, 2024

Terms

Description

This is a multi stage epic for allowing conjugations to be shifted between on the various Scribe-Android keyboards.

We'll need to complete this for all the Scribe-Android keyboards:

  • English
  • French
  • German
  • Italian
  • Portuguese
  • Russian
  • Spanish
  • Swedish

Once #267 is complete, we'll begin to add in conjugations that should be included in each language based on the data that's being returned from Scribe-Data. The conjugations will be paired with the conjugation views that should be used to display the data.

Contribution

Will be mapping out all of the conjugations that need to be included in each language. From there happy to plan the work and review as needed, and can also potentially help working on some of the languages after we decide on a standard :)

@andrewtavis andrewtavis added feature New feature or request help wanted Extra attention is needed labels Dec 15, 2024
@andrewtavis
Copy link
Member Author

@angrezichatterbox, I decided to just make one issue here, which will end up being a bit long, but then the information used to do one language is then more easily referenced when doing the rest 😊

@andrewtavis andrewtavis added the blocked Another issue is blocking label Dec 15, 2024
@andrewtavis andrewtavis changed the title Epic: Add functionality to switch conjugation views [Conjugation, Epic] Add functionality to switch conjugation views Dec 15, 2024
@andrewtavis andrewtavis removed the feature New feature or request label Feb 26, 2025
@andrewtavis andrewtavis removed the blocked Another issue is blocking label Apr 18, 2025
@andrewtavis
Copy link
Member Author

I unblocked this and #270, @angrezichatterbox, as I guess if we wanted to populate the display first and then insert without the ability to switch the views then we can also go that route. Let's maybe discuss the next steps in the sync tomorrow! 😊

@angrezichatterbox
Copy link
Member

I will pick this and #270 up.

@angrezichatterbox angrezichatterbox self-assigned this Apr 21, 2025
@andrewtavis
Copy link
Member Author

Thanks for continuing to take on the most important issues, @angrezichatterbox! 🚀

@angrezichatterbox
Copy link
Member

Addition of auxiliary verbs before in the conjugate forms in perfect tense is specific to German language right ?

@andrewtavis
Copy link
Member Author

Exactly, @angrezichatterbox :) Maybe another language 8000 later will have a similar functionality, but for now it's just German 😊

@angrezichatterbox
Copy link
Member

Wouldn't it be better if we can have the formats of the auxiliary verbs as well in the data-contracts ?

  "3": {
      "title": "Perfekt",
      "1": { "ich": "[auxiliaryVerb] pastParticiple" },
      "2": { "du": "[auxiliaryVerb] pastParticiple" },
      "3": { "er/sie/es": "[auxiliaryVerb] pastParticiple" },
      "4": { "wir": "[auxiliaryVerb] pastParticiple" },
      "5": { "ihr": "[auxiliaryVerb] pastParticiple" },
      "6": { "sie/Sie": "[auxiliaryVerb] pastParticiple" }
    }

So that we could query it easily using it contract itself.

@andrewtavis
Copy link
Member Author

I think that the contracts must have just not been updated within Scribe-Android, @angrezichatterbox :) This is what's in Scribe-Data:

    "3": {
      "title": "Perfekt",
      "1": { "ich": "[auxiliaryVerb] pastParticiple" },
      "2": { "du": "[auxiliaryVerb] pastParticiple" },
      "3": { "er/sie/es": "[auxiliaryVerb] pastParticiple" },
      "4": { "wir": "[auxiliaryVerb] pastParticiple" },
      "5": { "ihr": "[auxiliaryVerb] pastParticiple" },
      "6": { "sie/Sie": "[auxiliaryVerb] pastParticiple" }
    }

So looks like we're good to follow this. The current contracts are here :)

@angrezichatterbox
Copy link
Member

I might be a little confused on how grammar works but. For the finalized output from this would be like I would have the query the auxiliary word based on the lexeme I would get from the word and the different forms. I am a little confused on how to use the word and get the finalized output from it.

For Example:

I have the word wissen I would get a lexeme and get the word haben. How should the different past participle be arranged based on the word. I suppose the forms would be similar to the verb formats as the Present and Past.

I would like to have some clarity on this. Sorry I'm quite weak in grammar stuffs.

@angrezichatterbox
Copy link
Member

I might be done with all language except English and German. I am looking into make the entire work-flow better as currently its a little messed up. I would then make a PR.

@andrewtavis
Copy link
Member Author

Thanks for all your efforts here, @angrezichatterbox! Generally the way that this works is that we always have the same pastParticiple, and then we need to get the present conjugation for auxiliaryVerb. Maybe the contract needs to be updated 🤔 The German for gehen - to go that has sein as the auxiliary verb - would for instance be:

{
      "title": "Perfekt",
      "1": { "ich": "bin gegangen" },
      "2": { "du": "bist gegangen" },
      "3": { "er/sie/es": "ist gegangen" },
      "4": { "wir": "sind gegangen" },
      "5": { "ihr": "seid gegangen" },
      "6": { "sie/Sie": "sind gegangen" }
}

Any thoughts on how this would be conveyable contractually? Something like [1 - auxiliaryVerb] to say get the first conjugation of the verb that's returned? Seems a bit convoluted, but something similar could work 🤔

@angrezichatterbox
Copy link
Member
angrezichatterbox commented Apr 27, 2025

Maybe the contract needs to be updated 🤔
The contracts seem to be same in Scribe-Data and Scribe-Android.

So if I am thinking right we should extract variables like this.

{
      "title": "Perfekt",
      "1": { "ich": "[indicativePresentFirstPersonSingular] gegangen" },
      "2": { "du": "[indicativePresentSecondPersonSingular] gegangen" },
      "3": { "er/sie/es": "[indicativePresentThirdPersonSingular] gegangen" },
      "4": { "wir": "[indicativePresentFirstPersonPlural] gegangen" },
      "5": { "ihr": "[indicativePresentSecondPersonPlural] gegangen" },
      "6": { "sie/Sie": "[indicativePresentThirdPersonPlural] gegangen" }
}

Should I fix them to extract like this or can the contract be modified to easily do regex on the column and get the auxiliary verb and type easily.

@andrewtavis
Copy link
Member Author

But we need to say that this conjugation is on the auxiliary verb. Something like this?

{
      "title": "Perfekt",
      "1": { "ich": "[indicativePresentFirstPersonSingular auxiliaryVerb] gegangen" },
      "2": { "du": "[indicativePresentSecondPersonSingular auxiliaryVerb] gegangen" },
      "3": { "er/sie/es": "[indicativePresentThirdPersonSingular auxiliaryVerb] gegangen" },
      "4": { "wir": "[indicativePresentFirstPersonPlura auxiliaryVerbl] gegangen" },
      "5": { "ihr": "[indicativePresentSecondPersonPlural auxiliaryVerb] gegangen" },
      "6": { "sie/Sie": "[indicativePresentThirdPersonPlural auxiliaryVerb] gegangen" }
}

@angrezichatterbox
Copy link
Member

But we need to say that this conjugation is on the auxiliary verb. Something like this?

{
"title": "Perfekt",
"1": { "ich": "[indicativePresentFirstPersonSingular auxiliaryVerb] gegangen" },
"2": { "du": "[indicativePresentSecondPersonSingular auxiliaryVerb] gegangen" },
"3": { "er/sie/es": "[indicativePresentThirdPersonSingular auxiliaryVerb] gegangen" },
"4": { "wir": "[indicativePresentFirstPersonPlura auxiliaryVerbl] gegangen" },
"5": { "ihr": "[indicativePresentSecondPersonPlural auxiliaryVerb] gegangen" },
"6": { "sie/Sie": "[indicativePresentThirdPersonPlural auxiliaryVerb] gegangen" }
}

Ya this sounds good.

@angrezichatterbox
Copy link
Member

I could temporary modify the data-contracts to work around with it right. Until I receive the correct contacts from Scribe-Data. There is a subtree If I remember correct for whatever inside assets folder.

@andrewtavis
Copy link
Member Author

I don't think we've done a subtree for this yet, actually. Just for Scribe-i18n, but not for the contracts. Feel free to include the update in your PR and then we can finalize it :)

What are you thinking for a way to keep this all synced? A watcher on Scribe-Data that checks if the contracts have been updated, and if so PRs are opened in all client applications?

@angrezichatterbox
Copy link
Member

I don't think we've done a subtree for this yet, actually. Just for Scribe-i18n, but not for the contracts. Feel free to include the update in your PR and then we can finalize it :)

Okay I would include it in my PR

What are you thinking for a way to keep this all synced? A watcher on Scribe-Data that checks if the contracts have been updated, and if so PRs are opened in all client applications?

I suppose that would be great. In addition we would need a check on the frontend application to see if the contract works perfectly for all languages. Probably we are getting output from all the query functions. If we could integrate that into the workflow we could easily merge the changes or bring in changes as required much easily without any hassle.

@andrewtavis
Copy link
Member Author

Thanks for the thoughts here, @angrezichatterbox! I'll make an issue in Scribe-Data for this 😊

@angrezichatterbox
Copy link
Member

How should we handle English conjugation.Earlier we used to have has have ... within the sqlite database. Now we don't. So how should we handle.

@andrewtavis
Copy link
Member Author

Something like this?

{
  "title": "Perfekt",
  "1": { "ich": "[present have] gone" },
  "2": { "du": "[present have] gone" },
  "3": { "er/sie/es": "[present have] gone" },
  "4": { "wir": "[present have] gone" },
  "5": { "ihr": "[present have] gone" },
  "6": { "sie/Sie": "[present have] gone" }
}

@angrezichatterbox
Copy link
Member

So If I take the example of the word describe.

"1": {
            "title": "Present",
            "1": { "I": "describe" },
            "2": { "you": "describe" },
            "3": { "he/she/it": "describes" },
            "4": { "we": "describe" },
            "5": { "you all": "describe" },
            "6": { "they": "describe" }
        },
        "2": {
            "title": "Past",
            "1": { "I": "described" },
            "2": { "you": "described" },
            "3": { "he/she/it": "described" },
            "4": { "we": "described" },
            "5": { "you all": "described" },
            "6": { "they": "described" }
        },
        "3": {
            "title": "Perfect",
            "1": { "I": "presentParticiple simplePast" },
            "2": { "you": "presentParticiple simplePast" },
            "3": { "he/she/it": "presentParticiple simplePast" },
            "4": { "we": "presentParticiple simplePast" },
            "5": { "you all": "presentParticiple simplePast" },
            "6": { "they": "presentParticiple simplePast" }
        },
        "4": {
            "title": "Past Perfect",
            "1": { "I": "pastParticiple simplePast" },
            "2": { "you": "pastParticiple simplePast" },
            "3": { "he/she/it": "pastParticiple simplePast" },
            "4": { "we": "pastParticiple simplePast" },
            "5": { "you all": "pastParticiple simplePast" },
            "6": { "they": "pastParticiple simplePast" }
        }

Could I get some idea on how to handle here in such cases for Present, Past, Perfect. How should I get the data in ?

@andrewtavis
Copy link
Member Author

The thing is that we have this weird situation where it's similar to German in this case where we want to have a version of "have" in there. My example above was incorrect - apologies. Maybe trying to use German as a base?

{
"title": "Perfekt",
"1": { "ich": "[indicativePresentFirstPersonSingular auxiliaryVerb] gegangen" },
"2": { "du": "[indicativePresentSecondPersonSingular auxiliaryVerb] gegangen" },
"3": { "er/sie/es": "[indicativePresentThirdPersonSingular auxiliaryVerb] gegangen" },
"4": { "wir": "[indicativePresentFirstPersonPlura auxiliaryVerbl] gegangen" },
"5": { "ihr": "[indicativePresentSecondPersonPlural auxiliaryVerb] gegangen" },
"6": { "sie/Sie": "[indicativePresentThirdPersonPlural auxiliaryVerb] gegangen" }
}

But then for English there's only one "auxiliary verb" available to make a perfect tense - to have. So something like:

```json
{
"title": "Present Perfect",
"1": { "I": "[simplePresent have] gone" },
"2": { "you": "[simplePresent have] gone" },
"3": { "he/she/is": "[thirdPersonSingular have] gone" },
"4": { "we": "[simplePresent have] gone" },
"5": { "you all": "[simplePresent have] gone" },
"6": { "they": "[simplePresent have] gone" }
}

In this case we're telling it what the verb is as there's only one option. We check to see if the second element in the brackets is in the verb infinitives, and if it is then we conjugate it, or if not we check to see what the auxiliaryVerb of the current verb is?

Only suggestions above :) Let me know what you're thinking! 😊

@angrezichatterbox
Copy link
Member

So the final output would be similar to this I assume.

{
  "conjugations": {
    "1": {
      "title": "Present",
      "1": { "I": "describe" },
      "2": { "you": "describe" },
      "3": { "he/she/it": "describes" },
      "4": { "we": "describe" },
      "5": { "you all": "describe" },
      "6": { "they": "describe" }
    },
    "2": {
      "title": "Past",
      "1": { "I": "described" },
      "2": { "you": "described" },
      "3": { "he/she/it": "described" },
      "4": { "we": "described" },
      "5": { "you all": "described" },
      "6": { "they": "described" }
    },
    "3": {
      "title": "Present Perfect",
      "1": { "I": "[simplePresent have] described" },
      "2": { "you": "[simplePresent have] described" },
      "3": { "he/she/it": "[simplePresentThirdPersonSingular have] described" },
      "4": { "we": "[simplePresent have] described" },
      "5": { "you all": "[simplePresent have] described" },
      "6": { "they": "[simplePresent have] described" }
    },
    "4": {
      "title": "Past Perfect",
      "1": { "I": "[simplePast have] described" },
      "2": { "you": "[simplePas
9E88
t have] described" },
      "3": { "he/she/it": "[simplePast have] described" },
      "4": { "we": "[simplePast have] described" },
      "5": { "you all": "[simplePast have] described" },
      "6": { "they": "[simplePast have] described" }
    }
  }
}

How should the final output be organized in the conjugate tables. Sorry I am a little confused

@andrewtavis
Copy link
Member Author

No need to apologize whatsoever :) We're figuring this out!

The general way that the contract would be read is that the tables would be in the order that they're in the JSON, hence the numeric base keys. So the first is Present, and there are six fields aside from title, so we need a 3x2 view, and then data is loaded in in order from top left, center left, bottom left, top right, center right, and bottom right. The conjugations go in the center of the conjugation key, and then we want the secondary keys - I, you, etc - as the greyed out labels of the keys as is the case in Scribe-iOS 😊

Let me know if this helps!

@angrezichatterbox
Copy link
Member

For English, How exactly should the conjugations be arranged. For other language they seem to be easily arranged in either 3x2 or 2x2 . For English keyboard in Scribe-iOS I could see 2x2 goes into a 1x2 in some cases. I am a little confused since the data I get is 4 in size and 6 each. So I assumed I would be using 3x2 for all.

@andrewtavis
Copy link
Member Author

Ya I think we should switch iOS to be all 3x2. Does that make sense?

@angrezichatterbox
Copy link
Member

Ya I think we should switch iOS to be all 3x2. Does that make sense?

It makes sense for now as far as implementation is concerned but was there any specific reason why earlier the divisions were different.

@andrewtavis
Copy link
Member Author
andrewtavis commented Apr 29, 2025

I think when we were first doing it we were saying that English is only different in one form, so just make it simple and use other views. This is documented in one of the dev sync notes when @Jag-Marcel was doing GSoC (pinging you here @Jag-Marcel as we're discussing doing 3x2 views for all English verb conjugations). I think it does make sense at this point as the conjugations are the same, yes, but there are six "persons". We should be having one field for each of these as a baseline. Will make the decisions easier later on which to include when adding other keyboards/conjugations in Scribe-Conjugate and which not to - we always include all :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
help wanted Extra attention is needed
Projects
Status: Todo
Development

Successfully merging a pull request may close this issue.

2 participants
0