В последнем проекте, над которым я работал, ключом была английская фраза, а не ID. Это облегчило написание кода. Вы вызываете метод GetTranslationFor («Английская фраза», культура); в отличие от GetTranslationFor (123, культура);
Тогда ваши разработчики просто пишут код и не тратят время на поиск идентификаторов для нужной фразы или их добавление. Пусть метод GetTranslationFor отправит уведомление по электронной почте администратору, если он не найдет перевод фразы в базе данных, поэтому его можно добавить, НО вернитесь к введенной фразе.
Лучше показывать английскую фразу на французском сайте, чем какую-то ошибку или ничего.
И nvarchar max должен быть в порядке.
ps То, что я говорил, это то, что ваш второй метод выглядит хорошо, я бы просто добавил дополнительный ключ / индекс, используя в качестве ключа английскую фразу.