Quickly search the built-in iOS dictionary to see definitions of words. Collect words you want to remember.

Related tags

JSON Kotoba
Overview

Kotoba

Quickly search the built-in iOS dictionary to see definitions of words. Collect words you want to remember.

Installation (iPhone or iPad)

Note: An Apple Developer account is required.

  1. Clone or download Kotoba from GitHub.
  2. Open code/Kotoba.xcodeproj in Xcode.
  3. Select the Kotoba project file in Navigator, select the "Kotoba" target, then select the "Signing & Capabilities" tab.
  4. Change the "Team" to your Apple Developer account team.
  5. Change the "Bundle Identifier" to com.yourdomain.Kotoba.
  6. Change the "App Groups" to groups.com.yourdomain.Kotoba by adding yours, and deleting the current one.
  7. Select the "ShareExtension" target, and repeat the three steps above.
  8. Open the "Devices and Simulators" window (Shift-Cmd-2) and confirm your device is connected. If not, connect it via USB.
  9. Product > Run.

How to Use

  1. Tap "Add a new word".
  2. Type or dictate the word you want to look up, and hit the Search key.
  3. The iOS system dictionary view will slide up, showing you the definition of the word.
  4. If no definition appears, you may not have the right dictionaries installed. Tap "Manage" in the bottom-left of the screen, and download the appropriate dictionaries.
  5. Tap Done, and you're back at the main screen. The word you just looked up is added to the word history list.
  6. You can delete words from the list by swiping left and tapping "Delete".

Why Kotoba?

The original idea came from @gruber in a DM to @DFstyleguide:

Ever find a good iPhone dictionary app?

Best I’ve found is Terminology, but it’s so complicated I usually just fire up Vesper and use the system “Define” service.

The system one is good; and it’s perfect for when I’m reading in an app. I find it fiddly to use though when I’m reading a printed book.

I want:

  1. Open dictionary app.
  2. Start typing word to look up.
  3. Read definition.

Instead I have to:

  1. Open Vesper
  2. Open a note
  3. Type the word I’m looking for
  4. Select the word, tap Define
  5. Read definition.
  6. Close dictionary and delete the word from my note.

Development Status

Kotoba is in a bare-bones state, with just enough functionality to be useful.

As far as I know, it works fine. But if you find any bugs, or have suggestions for improvement, please raise an issue on GitHub. Any feedback is heartily welcome.

Why Open-Source?

Look, ladies and gents, you are much smarter than I. I am a working developer, but Swift/iOS is not my day job. I made this open-source for two reasons:

  • Honestly, I suspected Kotoba wouldn't be approved for the App Store. If it's open-source, the Xcode-savvy can at least install it on their personal devices.
  • If smarter, more experienced Swift developers can suggest improvements or fix my bugs, I will learn from them.

Which is a nice segue to... how to contribute

Comments
  • Modernization for iOS 13 plus a bit of branding.

    Modernization for iOS 13 plus a bit of branding.

    This pull request contains quite a few things:

    • Support for Dark Mode in iOS 13
    • A workaround for the UIReferenceLibraryViewController slowness in iOS 13 (see comment in initiateSearch() of AddWordViewController)
    • Some subtle new branding for the app (using color and the American Typewriter font)
    • A check for text on the clipboard when the app becomes frontmost
    • A partial fix for a janky animation from WordListViewController to AddWordViewController

    Feel free to cherry pick whatever you want.

    bug enhancement 
    opened by chockenberry 10
  • Ignore multiline pasteboard text at launch

    Ignore multiline pasteboard text at launch

    The new feature added in #41 to automatically detect text on the pasteboard, and offer to use it as a search, should ignore pasteboard text that contains newline characters, as it is unlikely to be useful as a word search.

    bug 
    opened by willhains 9
  • [dev question][help needed] Unable to Resize UIReferenceLibraryView

    [dev question][help needed] Unable to Resize UIReferenceLibraryView

    Hi Will, I am using the Kotoba app and it's very helpful! I am a newbie to iOS dev so my apologies in advance if I'm asking some stupid questions. I am trying to make the UIReferenceLibraryView smaller so that I can add a search bar on the top. No offense to your design, that's just how I see fit in my read-lookup workflow. I read some documentation on UIReferenceLibraryView and can't find methods to resize the view. Later I noticed that UIReferenceLibraryView inherits from UIViewController, which has a preferredContentSize instance property. Therefore I did something like this:

    let dictionaryViewController = UIReferenceLibraryViewController(term: word.text)
    dictionaryViewController.preferredContentSize = CGSize(width: 200, height: 300)
    

    However, it won't work. Is this feature possible? If so, could you tell me the right way to do it? If not, could you elaborate on why not? Thanks a lot!

    Yuan

    opened by jktzes 3
  • iCloud support, smarter clipboard detection, branding tweaks.

    iCloud support, smarter clipboard detection, branding tweaks.

    The word list can now be stored on iCloud (it still defaults to local storage.) When you change to "Use iCloud" (using the Settings app), you will be prompted to merge the local words in a list stored in iCloud.

    To enable iCloud, you'll need to provision your App ID using the developer portal. The brief instructions are in Setup_iCloud.txt.

    I also tuned up the clipboard detection so that it won't prompt you more than once for each new word or for text that has newlines in it.

    Moved some color into the navbar, too.

    opened by chockenberry 3
  • Clipboard and Text File buttons in Settings can't handle long labels

    Clipboard and Text File buttons in Settings can't handle long labels

    The new layout of the import buttons in Settings looks much better, but there's a problem: the secondary label doesn't wrap or shrink. The contents of this button can be long in English (e.g. "12,345 words", and even longer in other languages (e.g. CHOCK). Not the end of the world, but we've come this far :-)

    bug 
    opened by chockenberry 2
  • Searches are still too slow on iOS 13

    Searches are still too slow on iOS 13

    Opening this issue to track the problem, although it's really an iOS 13 bug. Originally reported in #39, and @chockenberry implemented a workaround using background queues to do the lookup, but it's not ideal, and the delay is still much worse than it was on iOS 12.

    This issue is to file a radar with Apple, but also track the problem/workarounds on the Kotoba side.

    opened by willhains 2
  • Searches are slow on iOS 13

    Searches are slow on iOS 13

    Hi,

    when i type in a word and then click Search, Kotoba reacts rather slow and slugish, when run on iOS 13. Any updates for iOS 13 in sight (i am not a developer which could fix this)?

    Thanks for such a useful App!

    bug 
    opened by seiz 2
  • Change min font size on word lookup text field, take 2

    Change min font size on word lookup text field, take 2

    When typing very long words, the text field would scroll rather than displaying the whole word. This annoyed me, so, now it will scale down to 15pt.

    (This is a revision of pull request #33, addressing the IB spam issue)

    opened by fweez 2
  • Export word list

    Export word list

    Would you consider integrating an export function into the app?

    In my own crude way, I tried to accomplish this by downloading the app's container via Xcode and browsing through the files, but to no avail. If there ever comes a point where the app is no longer supported, I wouldn't want the words I've accumulated to disappear along with it.

    I found the app based on @gruber's recommendation and I've been using it incessantly ever since. Your work is much appreciated. Thank you.

    enhancement 
    opened by aloglu 2
  • Bigger search bar

    Bigger search bar

    @gruber

    can we make the search bar and text bigger? More like 20pt or 24pt or something instead of 16? Why not since it’s the only input? I tried poking around the storyboard in Xcode but don’t see any way to change that there.

    enhancement 
    opened by willhains 2
  • Sync across devices

    Sync across devices

    This is a redux of #11, to enable syncing via iCloud Drive or other cloud services. If the user can select a save location of their choice via the Files API, and Kotoba can access/update that location without prompting the user every time, then it doesn't need iCloud access (read: doesn't need to be an App Store app).

    enhancement 
    opened by willhains 1
  • Failed to install the requested application

    Failed to install the requested application

    I download the zip file and follow the instructions to modify values in info.plist. But I can't build the project. It keeps showing alert with title "Failed to install the requested application" and says "The application's Info.plist does not contain a valid CFBundleVersion. Ensure your bundle contains a valid CFBundleVersion." Does anyone have the same problem?

    opened by PinYuanChen 0
  • Make installation easier with optional developer config file

    Make installation easier with optional developer config file

    Would it be an idea to have an optional developer config file that can override "Team" and "Bundle identifier" settings, much like NetNewsWire does it.

    This way, you only need to configure the app once, and not each time you want to install it.

    I tried this myself, but I'm not an XCode warrior (more python guy), but I think it's still a good idea to implement.

    opened by doekman 1
  • Share Sheet Extension

    Share Sheet Extension

    (Copy & paste from chat with @gruber)

    What about something to put in the Sharing sheet? I realize that once you have a text selection you can tap it and just hit Look Up in any app. But I’ve grown to resent the fact that words I look up that way don’t get saved to my history. I love my Kotoba history.

    In some ways, the history really is what we told Apple it was the app store description — a description for the app above and behind a dictinoary.

    So even though the best possible Share sheet extension would not be as convenient as the built-in Look Up, I would use it. Right now I often copy, switch to Kotoba, and paste, just to get it in my history.

    The label is obvious: “Look Up in Kotoba”

    opened by willhains 0
Releases(2.0_RC1)
  • 2.0_RC1(Jan 12, 2020)

    • Dark mode support
    • Proper iPad support
    • iCloud sync
    • Clipboard suggestions
    • Export word list
    • Settings screen
    • Import word list (clipboard or file)
    • Performance improvements
    Source code(tar.gz)
    Source code(zip)
Owner
Will Hains
Will Hains
Reflection based (Dictionary, CKRecord, NSManagedObject, Realm, JSON and XML) object mapping with extensions for Alamofire and Moya with RxSwift or ReactiveSwift

EVReflection General information At this moment the master branch is tested with Swift 4.2 and 5.0 beta If you want to continue using EVReflection in

Edwin Vermeer 964 Dec 14, 2022
A project that uses the Flickr image search API and shows the results in a 3-column scrollable collection view

FlickrImagesDemo FlickrImagesDemo is a project that uses the Flickr image search API and shows the results in a 3-column scrollable collection view. 


प्रणय पवार 0 Dec 9, 2021
Tourist App enable users to search about touristic places in saudi arabia

TouristApp Project Name: Tourist Project Description : Tourist it's App enable users to search about touristic places in saudi arabia . Features List:

tasneemJafsher 0 Jan 6, 2022
iTunesSearch: a screenshot listing project that using iTunes Search API

iTunesSearch iTunesSearch is a screenshot listing project that using iTunes Search API. This project written in Swift with MVVM architecture. Installa

null 0 Dec 14, 2021
A sweet and swifty YAML parser built on LibYAML.

Yams A sweet and swifty YAML parser built on LibYAML. Installation Building Yams requires Xcode 11.x or a Swift 5.1+ toolchain with the Swift Package

JP Simard 930 Jan 4, 2023
Camera App Built With Swift

Camera App Hi there! me Aldanah Aldohayan and Ebtesam Alahmari worked in this project in the end of week8 of Tuwaiq's bootcamp How did we build this A

Aldanah Aldohayan الدانه 0 Dec 3, 2021
Reddit Feed Built With Swift

RedditFeed Steps to run the application: Download the project. Open Terminal and go to the root of the project. Run pod install Open RedditFeed.xcwork

Rahul Garg 0 Dec 14, 2021
Magical Data Modeling Framework for JSON - allows rapid creation of smart data models. You can use it in your iOS, macOS, watchOS and tvOS apps.

JSONModel - Magical Data Modeling Framework for JSON JSONModel allows rapid creation of smart data models. You can use it in your iOS, macOS, watchOS

JSONModel 6.9k Dec 8, 2022
Magical Data Modeling Framework for JSON - allows rapid creation of smart data models. You can use it in your iOS, macOS, watchOS and tvOS apps.

JSONModel - Magical Data Modeling Framework for JSON JSONModel allows rapid creation of smart data models. You can use it in your iOS, macOS, watchOS

JSONModel 6.8k Nov 19, 2021
Argo is a library that lets you extract models from JSON or similar structures in a way that's concise, type-safe, and easy to extend

Argo is a library that lets you extract models from JSON or similar structures in a way that's concise, type-safe, and easy to extend. Using Argo

thoughtbot, inc. 3.5k Dec 20, 2022
JSONHelper - ✌ Convert anything into anything in one operation; JSON data into class instances, hex strings into UIColor/NSColor, y/n strings to booleans, arrays and dictionaries of these; anything you can make sense of!

JSONHelper Convert anything into anything in one operation; hex strings into UIColor/NSColor, JSON strings into class instances, y/n strings to boolea

Baris Sencan 788 Jul 19, 2022
ObjectMapper is a framework written in Swift that makes it easy for you to convert your model objects to and from JSON.

ObjectMapper is a framework written in Swift that makes it easy for you to convert your model objects (classes and structs) to and from J

Tristan Himmelman 9k Jan 2, 2023
A fast, convenient and nonintrusive conversion framework between JSON and model. Your model class doesn't need to extend any base class. You don't need to modify any model file.

MJExtension A fast, convenient and nonintrusive conversion framework between JSON and model. 转换速度快、使用简单方便的字典转模型框架 ?? ✍??Release Notes: more details Co

M了个J 8.5k Jan 3, 2023
Application where you can build your portfolio with your Educations, Experiences, Projects, and Achievements

App Store Link Application where you can build your portfolio with your Educations, Experiences, Projects, and Achievements Description Signup with ne

Marwan Sultan 19 Jun 23, 2022
JSONExport is a desktop application for Mac OS X which enables you to export JSON objects as model classes with their associated constructors, utility methods, setters and getters in your favorite language.

JSONExport JSONExport is a desktop application for Mac OS X written in Swift. Using JSONExport you will be able to: Convert any valid JSON object to a

Ahmed Ali 4.7k Dec 30, 2022
Codable code is a Swift Package that allows you to convert JSON Strings into Swift structs

Codable code is a Swift Package that allows you to convert JSON Strings into Swift structs.

Julio Cesar Guzman Villanueva 2 Oct 6, 2022
The only Connect API library you'd ever need

ConnectKit A Swift client for Infinite Flight's Connect APIs, built using the Network framework. Supported APIs IF Session Discovery Connect API V2 Op

Alexander Nikitin 7 Dec 14, 2022
HandyJSON is a framework written in Swift which to make converting model objects to and from JSON easy on iOS.

HandyJSON To deal with crash on iOS 14 beta4 please try version 5.0.3-beta HandyJSON is a framework written in Swift which to make converting model ob

Alibaba 4.1k Dec 29, 2022
Property mapping for Objective-C iOS apps.

Stop repeating your data parsing code in iOS apps. Data parsing is one of most common tasks we need to do in our apps, yet still majority of people do

Krzysztof Zabłocki 1.1k Sep 8, 2022