True, but reconciling translation files based on different keys can get messy. Using keys which aren't directly tied to the original language solves this.
> 2. You usually (or it’s recommended to) translate entire phrases
The kind of situation I'm thinking of is words that are used alone, but which are disambiguated by context -- for example, "clear" could be an action meaning "remove everything", or a synonym for "transparent", or an odd term for "approve".
Words used alone or need context should use the i18n libraries context abilities. Like p_(“clear”, “verb”) and p_(“clear”, “noun”). It’s also helpful to add comments and your translation system should be able to pick them up:
// translators: %d is an amount of money
If you are using a modern translation system that doesn’t support these features, perhaps “downgrading” to an older system is a good idea.
2. You usually (or it’s recommended to) translate entire phrases. Older systems like gettext use context and namespaces to differentiate source keys in a way that is helpful for various things. I believe this is (or should be) a non-problem for any modern system as well.