Unity not save dictionary?

I have the scriptable object:

public class TranslatableString : ScriptableObject
{
    public string Name;
    [SerializeField] public Dictionary<Language, string> translations = new Dictionary<Language, string>();

    public string this[Language index]
    {
        get
        {
            return translations[index];
        }
    }
}

And field (Name) in my object (named MyObject) of this type.
I created TranslatableString object in assets in set value for dictionary with my custom editor. I put it to my MyObject. I created prefab for the object.
Now, when I instantiating this prefab, I haven`t any data in myObject.Name.translations. But, if I would have, for example, string field in my scriptable object, it value save.
May be problem in my custom editor?

[CustomEditor(typeof(TranslatableString))]
public class TranslatableStringEditor : Editor
{
    TranslatableString translatableString;
    private void OnEnable()
    {
        translatableString = (TranslatableString)target;
    }
    public override void OnInspectorGUI()
    {
        base.OnInspectorGUI();
        if (translatableString.translations.Count > 0)
        {
            for (int i = 0; i < translatableString.translations.Count; i++)
            {
                EditorGUILayout.BeginHorizontal();
                EditorGUILayout.LabelField(translatableString.translations.ElementAt(i).Key.ToString() + ":");
                translatableString.translations[translatableString.translations.ElementAt(i).Key] = EditorGUILayout.TextField(translatableString.translations.ElementAt(i).Value);
                EditorGUILayout.EndHorizontal();
            }
        }
        else
        {
            foreach (Language language in System.Enum.GetValues(typeof(Language)))
            {
                translatableString.translations.Add(language, "");
            }
        }
    }
}

Yes, Unity does not do it. The limitations of Unity serialization is described here: Unity - Manual: Script serialization You either need to either implement the custom serialization interface, or have the scriptable object data stored as something serializable like list and create the dictionary from list at runtime first time you need it.