The Oxford Picture Dictionary was made based on The New Oxford Picture Dictionary: Monolingual English Edition by Parnwell et al. at Oxford University Press. In the first paragraph of the Preface, the authors have described the book as:
The New Oxford Picture Dictionary contextually illustrates over 2,400 words. The book is a unique language learning tool for students of English. It provides students a glance at American lifestyle, as well as compendium of useful vocabulary.
This project has not been authorized by Oxford University Press. Any image products come from The New Oxford Picture Dictionary used in this project are owned by Oxford University Press. I am using them for practice and educational purposes.
❌ What you cannot do to this project:
- use any material presented in it for commercial purpose
- sell it to others (not even a modified version)
- use AI tools to analyze it
- use it in an advertising-supported website
- use it in a product that generates revenue
- Change the license
✔ What you can do to this project:
- Improve this project, like clone, fork & send a Pull Request
- Academic research & education
- Non-profit organizations
- Greatly improved image resolution by utilizing AI Image enhancement
- Made numbered tags interactive
- Implemented pan and pinch
- Made vocabulary audible
- Implemented multilingual feature
The Oxford Picture Dictionary is designed for easy use. Simply click a numbered tag on the image to display the vocabulary, along with its pronunciation.
Requirement: MacOS system with XCode downloaded. Minimal Deployments requirement: iOS 17.0
Clone this repository and open it in XCode. Trust the project, build and run with a device of your choice.
Not yet available.
Not yet available.
- Go to
Assets
, add your new image topages
folder. Rename the image top104
if it's not already existing. Otherwise, usep105
and so on. Make sure the numbers are consecutive. - Go to
ContentView.swift
, change the fieldisUsingDrag
to1
. - In
ContentView.swift
, change the fieldlangManager
'sdefaultPage
to the number of the page you just added. Ex.defaultPage: 104
if your image is namedp104
. - Choose a simulator (highly recommend iPads for higher precision) and run the project.
- You should now see something like below after everything has been fully loaded. Next, drag the red dot located in the left-upper corner of the image to anywhere you like.
- Check the XCode console, you should see a position being
printed whenever you finish dragging. Ex.
0.5954198473282443,0.10178117048346055
- Find the
WordsPosition
folder in the project. Add a new file with exact the same name as the image you just added. (i.e. name your filep104
if your image is namedp104
) - In the newly created file, add
XPosition,YPosition
as the first line of the file. - Copy the position from the console and paste it to the next
line of the file. If you are uncertain, you can inspect the
existing files in
WordsPosition
. After you finish this step, the position of the new word is completed. - Now add the actual word. To do so, locate folder
Words-en
in the project, add a new file in it ang give it namep104-en
if your image is namedp104
. - Within the newly created file, enter the title of the scenario in the first line. (ex. People and Relationships)
- In the next line, enter the actual word. (ex. husband)
- Repeat steps 5-12 to add more words to the scenario. Again,
if you are uncertain, you can inspect the existing files in
Words-en
. - Congratulations! You have just added an English Scenario. Now
go back to
ContentView.swift
and change fieldisUsingDrag
to0
. - Run the project. Since in step 3, you have changed the default
page to
104
(...or some other number), the first page you will see should be the scenario you just added. Now you can try to play it withen-US
oren-UK
to see if it actually works. - If you want the default page to start from
2
, change it in the fieldlangManager
, like you did in step 3.
- You might be wondering why the pages starts from
2
, this is because I was following the book, and it was designed this way.
- Read and follow the above section 'New scenario (English)'.
- Using Chinese as example, locate folder
Words-zh-Hans
(Simplified Chinese) orWords-zh-Hant
(Traditional Chinese). - Similar to the step 10 in the last section. If your
image is named
p104
, add a new file and name itp104-zh-Hans
(insideWords-zh-Hans
) or name itp104-zh-Hant
(insideWords-zh-Hant
). - Similar to the step 11 and 12 in the last section. Add a title. (ex. 人际关系) and words in the next lines (ex. 丈夫)
- It's done! Now run the project and switch to Chinese to see if it works.
- Locate file
enum/Lang.swift
, inside enumLang
, add a new case. The case should be the abbreviation of your language, and you should also assign a string value to it. This value will be the name of the icon of your new language. (ex.ja-JP
for Japanese) - That being said, go to
Assets
and add the icon under folderlang
. Give it the same name as the string value. - Locate
Language/LangManager.swift
and find the private functioncsvNameSuffix
. Next, find the inner functiongetSuffix
, add the new case to the switch statement. The case should be the abbreviation of your language (which was added by you) and the case should return the suffix of the word folder. (That is, where the words are stored. ex. If it returns"en"
, the folder it associates should be namedWords-en
, If it returns"ja"
, the folder it associates should be namedWords-ja
) - That being said, create a new folder to store the words
for your language. You should name it
Words-[abbr. of your language]
(ex.Words-ja
for Japanese). - Now your new language should be added. Remember, if you are uncertain, you can inspect and mimic the existing languages to see how things should be done.
- This project is using Swift's built-in Speech system, which means only the supported languages will have speech feature available. Moreover, you should name the string value and image according to this gist to enable speech for your language.
This app is offered entirely free as an English learning tool, in recognition of Oxford University Press's generosity in sharing educational resources. In that spirit, I encourage all derivative works based on this app to also be made freely available and open to the public. Beyond that, you are welcome to build upon and expand this project with your own ideas.
To help, please go to this google sheet. If you contribute high-quality translations, your name will be proudly featured on the Credits page.
If you wish to add a new language or if you have found a translation error, please contact me via email: kolynlin@protonmail.com