Parser::getTargetLanguage returns page language (e.g. content language), unless the Parser is parsing an interface message or target language is explicitly set in ParserOptions.
if userlang option is used, then the ParserCache gets split by user language and perhaps/probably target (or something else, parser / cache language?) language should also be set.
If {{int:}} is used on a page, such as on commons, then that does set the target language (afaik) and the cache is split by language.
Having this be consistent and consider userlang would help with having the property parser function and lua be more consistent in what language is used by default to format labels, etc. Right now, the parser function uses target language. If {{#property}} is used on a page with {{int:}} then, the label is in the user language, while lua would be in the content language.
See also T114640: make Parser::getTargetLanguage aware of multilingual wikis