Code Monkey home page Code Monkey logo

scribe-ios's Introduction

Scribe Logo

    platforms version issues language license coc twitter reddit

    Available on the App Store

    iOS app with keyboards for language learners

    Scribe-iOS is a pack of iOS and iPadOS keyboards for language learners. Features include translation (beta), verb conjugation and word annotation that give users the tools needed to communicate with confidence.

    Scribe is fully open-source and does not collect usage data or ask for system access. Feature data is sourced from Wikidata and stored in-app, meaning Scribe is a highly responsive experience that does not require an internet connection.

    The contributing section has information for those interested, with the articles and presentations in featured by also being good resources for learning more about Scribe.

    Also available on Android (WIP), Desktop (planned) and for the data processes see Scribe-Data.

    Contents

    Preview Videos

    The following are the preview videos for the App Store:

    iPhone 6.5" version

    Scribe_iPhone65.mp4

    See also

    iPad Pro 4th gen version

    Scribe_iPadPro4th.mp4

    Contributing

    Work that is in progress or could be implemented is tracked in the issues and projects. Please also see the contribution guidelines if you are interested in contributing to Scribe-iOS. Those interested can further check the -next release- and -priority- labels in the issues for those that are most important, as well as those marked good first issue that are tailored for first time contributors.

    After your first few pull requests the team would be happy to discuss granting you further rights as a contributor, with a maintainer role then being possible after continued interest in the project. Scribe seeks to be an inclusive and supportive organization. We'd love to have you as a member!

    ⚠️ Note on Debugging ⚠️

    Because Scribe is a keyboard extension, the Xcode debugger doesn't work as expected when debugging a regular app. Please see the note on debugging in CONTRIBUTING.md to learn how to get it working properly.

    Ways to Help

    Road Map

    Click here to see the current Scribe road map 🗺️

    The following outlines the plan for Scribe's development, which includes steps across applications and data solutions.

    • Scribe-iOS v2.2.0
    • Scribe-iOS v2.3.0
      • Rework Scribe-iOS app interface and add menu
      • Main issue: Scribe-iOS #16
    • Scribe-iOS v3.0.0 and Scribe-Data v3.0.0
    • Scribe-Android v1.0.0
    • Scribe-iOS v4.0.0 and Scribe-Data v4.0.0
      • Downloadable language packs for Scribe keyboards
      • Main issue: Scribe-iOS #89
    • Scribe-iOS v5.0.0
      • Machine learning based autosuggest and autocorrect
      • Main issue: Scribe-iOS #2

    Data Edits

    Scribe does not accept direct edits to the grammar JSON files as they are sourced from Wikidata. Edits can be discussed and the Scribe-Data queries will be changed and ran before an update. If there is a problem with one of the files, then the fix should be made on Wikidata and not on Scribe. Feel free to let us know that edits have been made by opening a data issue or contacting us in the issues for Scribe-Data and we'll be happy to integrate them!

    Designs

    Public Figma Designs

    The designs for Scribe are made using Figma. The App Store videos, images and text can be found in the AppStore directory. Those with interest in contributing can open a design issue to make suggestions! Design related issues are marked with the design label.

    Setup

    Users access Scribe language keyboards through the following:

    • Download Scribe from the App Store
    • Settings -> General -> Keyboard -> Keyboards -> Add New Keyboard
    • Select Scribe and choose from the available language keyboards
    • When typing press 🌐 to select keyboards

    Supported Languages

    Scribe's goal is functional, feature-rich keyboards for all languages. Check scribe_data/extract_transform for queries for currently supported languages and those that have substantial data on Wikidata. Also see the new keyboard label in the Issues for keyboards that are currently in progress or being discussed, and suggest a new keyboard if you don't see it being worked on already!

    The following table shows the supported languages and the amount of data available for each on Wikidata:

    Languages Nouns Verbs Translations* Prepositions†
    French 16,815 5,450 67,652 -
    German 29,272 3,557 67,652 187
    Italian 8,646 73 67,652 -
    Portuguese 5,191 495 67,652 -
    Russian 194,419 11 67,652 13
    Spanish 27,128 4,036 67,652 -
    Swedish 42,807 4,394 67,652 -

    * Given the current beta status where words are machine translated.

    Only for languages for which preposition annotation is needed.

    Updates to the above data can be done using scribe_data/load/update_data.py.

    Keyboard Features

    Keyboard features are accessed via the Scribe key at the top left of any Scribe keyboard. Pressing this key gives the user three new selectable options: Translate, Conjugate and Plural in the keyboard's language. These keys allow for words to be queried and inserted into the text field followed by a space.

    Current features include:

    • Translation

    The beta Translate feature can translate single words or phrases from English into the language of the current keyboard when the return key is pressed.

    Those interested in improving this feature can see the Translation project. The goal is that Translate will provide options for entered words where a user can use grammatical categories and synonyms to select the best option (see issue). Then the feature will expand to allow translations from system and chosen languages. More advanced methods will be planned once this feature is out of beta.

    As of now translations are not widely available on Wikidata (see issue). The current functionality is thus based on 🤗 Transformers machine translations of words queried from Wikidata. The ultimate goal is for the translations and synonyms to all be directly queried.

    • Verb Conjugation

    With the Conjugate feature, a user is presented with the grammar charts for an entered verb instead of the keyboard. Pressing an example in the charts inserts the chosen conjugation into the text field.

    • Noun Plurals

    The Plural feature allows a user to enter a noun and then insert its plural into the text field when the return key is pressed.

    • Word Annotation

    Scribe further annotates words in the command bar to help users understand the context of what they're typing. Annotations are displayed once a user has typed a given word and pressed space, after commands or by pressing the Scribe key while it is selected. The hope is that annotation will help a user remember grammar rules even when not using Scribe.

    Nouns

    Scribe annotates nouns in the command bar according to the following conventions:

    • Feminine: colored red 🟥 and marked with (F)
    • Masculine: colored blue 🟦 and marked with (M)
    • Common: colored purple 🟪 and marked with (C)
    • Neutral: colored green 🟩 and marked with (N)
    • Plural: colored orange 🟧 and marked with (PL)
    • More than one: marked with all their forms

    The above form abbreviations are translated into their equivalents in the keyboard's language.

    Prepositions

    Scribe also annotates the grammatical cases (accusative, dative, etc) of prepositions in the command bar if there is a relation in the given language.

    • Pronoun Selection

    Annotations for preposition cases can also be pressed to provide a conjugation display where the user can select the proper pronoun for the given case. The conjugation view will also provide appropriate interfaces to subset the available pronouns based on the desired subject and object combinations to help the user make the correct choice.

    • Base Functionality

    The goal is for Scribe to have all the functionality of system keyboards. See the Base Keyboard Features project if interested in helping.

    Current features

    • iPhone and iPad support
    • Dynamic layouts for cross-device performance
    • Portrait and landscape modes
    • Dark mode compatibility
    • Autocompletion based on Wikidata sourced words
    • Autosuggestion based on Wikipedia derived relationships
    • Autocorrection (WIP - see Autocorrect issue)
    • Auto-capitalization following ., ? and !
    • The double space period shortcut
    • Typing symbols and numbers followed by a space returns keyboard to letters
    • Hold-to-select characters for letters and symbols
    • Key pop up views for letters and symbols

    Language Practice

    A future feature of Scribe is language practice within the app itself. Scribe presents users with information that is directly relevant to their current struggles with a second language. This information can be saved in-app and used to create personalized lessons such as flashcards to reinforce the information that Scribe has provided. Work on this feature will be completed in the language practice project.

    Featured By

    Articles and Presentations on Scribe

    2022


    Wikimedia Tech News           MediaWiki          

    Powered By

    Contributors

    Many thanks to all the Scribe-iOS contributors! 🚀

    Code

    List of referenced codes

    Wikimedia Communities


    Wikidata logo           Wikipedia logo          

    scribe-ios's People

    Contributors

    andrewtavis avatar saurabhjamadagni avatar rishikumarray avatar helloitdepartment avatar misteu avatar elithaxxor avatar cdmill avatar wkyoshida avatar

    Recommend Projects

    • React photo React

      A declarative, efficient, and flexible JavaScript library for building user interfaces.

    • Vue.js photo Vue.js

      🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

    • Typescript photo Typescript

      TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

    • TensorFlow photo TensorFlow

      An Open Source Machine Learning Framework for Everyone

    • Django photo Django

      The Web framework for perfectionists with deadlines.

    • D3 photo D3

      Bring data to life with SVG, Canvas and HTML. 📊📈🎉

    Recommend Topics

    • javascript

      JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

    • web

      Some thing interesting about web. New door for the world.

    • server

      A server is a program made to process requests and deliver data to clients.

    • Machine learning

      Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

    • Game

      Some thing interesting about game, make everyone happy.

    Recommend Org

    • Facebook photo Facebook

      We are working to build community through open source technology. NB: members must have two-factor auth.

    • Microsoft photo Microsoft

      Open source projects and samples from Microsoft.

    • Google photo Google

      Google ❤️ Open Source for everyone.

    • D3 photo D3

      Data-Driven Documents codes.