1. Set initial data from dictionary.json file with AJAX
2. Once there is some actual player data, set Local Storage item to the dictionary object .AsJson
3. Turning game on again, check if that Local storage item exists, get it, use dictionary "Load from json string". If doesn't exist, go to 1.
What you described is a good and effective solution.
If you are extracting each value from the dictionary into a global variable, it may be easier and more convenient to use several dictionaries. For example, one for storing player progress (copy values to variables), and another one for storing game settings (use directly, without copying to variables).