diff --git a/src/main/kotlin/com/eny/i18n/plugin/ide/references/translation/TranslationToCodeReferenceProvider.kt b/src/main/kotlin/com/eny/i18n/plugin/ide/references/translation/TranslationToCodeReferenceProvider.kt index 3c008bd0..1dcb86be 100644 --- a/src/main/kotlin/com/eny/i18n/plugin/ide/references/translation/TranslationToCodeReferenceProvider.kt +++ b/src/main/kotlin/com/eny/i18n/plugin/ide/references/translation/TranslationToCodeReferenceProvider.kt @@ -48,12 +48,10 @@ class ReferencesAccumulator(private val key: String) { entry: PsiElement, _:Int -> val typeName = entry.node.elementType.toString() if (entry.text.unQuote().startsWith(key)) { - if (listOf("JS:STRING_LITERAL", "quoted string").any { item -> typeName.contains(item) }) { + if (listOf("JS:STRING_LITERAL", "quoted string", "JS:STRING_TEMPLATE_EXPRESSION").any { typeName.contains(it) }) { res.add(entry) } else if (typeName == "JS:STRING_TEMPLATE_PART") { res.add(entry.parent) - } else if (typeName == "JS:STRING_TEMPLATE_EXPRESSION") { - res.add(entry) } } true diff --git a/src/main/kotlin/com/eny/i18n/plugin/language/js/JsLanguageFactory.kt b/src/main/kotlin/com/eny/i18n/plugin/language/js/JsLanguageFactory.kt index 59edcd67..40cf9288 100644 --- a/src/main/kotlin/com/eny/i18n/plugin/language/js/JsLanguageFactory.kt +++ b/src/main/kotlin/com/eny/i18n/plugin/language/js/JsLanguageFactory.kt @@ -16,9 +16,9 @@ import com.intellij.lang.javascript.psi.JSCallExpression import com.intellij.lang.javascript.psi.JSLiteralExpression import com.intellij.openapi.util.TextRange import com.intellij.patterns.ElementPattern +import com.intellij.patterns.XmlPatterns import com.intellij.psi.PsiElement import com.intellij.psi.util.PsiTreeUtil -import com.intellij.psi.xml.XmlAttribute /** * Vue language components factory @@ -56,7 +56,7 @@ internal class JsCallContext: CallContext { pattern.accepts(element) || pattern.accepts(PsiTreeUtil.findFirstParent(element, { it.parent?.type() == "JS:ARGUMENT_LIST" })) } || - (element is XmlAttribute) && element.name == "i18nKey" + XmlPatterns.xmlAttributeValue("i18nKey").accepts(element) } internal class JsReferenceAssistant: ReferenceAssistant { diff --git a/src/main/kotlin/com/eny/i18n/plugin/language/jsx/JsxLanguageFactory.kt b/src/main/kotlin/com/eny/i18n/plugin/language/jsx/JsxLanguageFactory.kt index b5036723..998a916f 100644 --- a/src/main/kotlin/com/eny/i18n/plugin/language/jsx/JsxLanguageFactory.kt +++ b/src/main/kotlin/com/eny/i18n/plugin/language/jsx/JsxLanguageFactory.kt @@ -42,7 +42,7 @@ class JsxReferenceAssistant: ReferenceAssistant { private val parser: KeyParser = KeyParser() override fun pattern(): ElementPattern { - return XmlPatterns.xmlAttribute("i18nKey") + return XmlPatterns.xmlAttributeValue("i18nKey") } override fun extractKey(element: PsiElement): FullKey? { val config = Settings.getInstance(element.project).config() diff --git a/src/main/kotlin/com/eny/i18n/plugin/parser/XmlAttributeKeyExtractor.kt b/src/main/kotlin/com/eny/i18n/plugin/parser/XmlAttributeKeyExtractor.kt index 12110d40..fb530737 100644 --- a/src/main/kotlin/com/eny/i18n/plugin/parser/XmlAttributeKeyExtractor.kt +++ b/src/main/kotlin/com/eny/i18n/plugin/parser/XmlAttributeKeyExtractor.kt @@ -2,19 +2,20 @@ package com.eny.i18n.plugin.parser import com.eny.i18n.plugin.utils.KeyElement import com.eny.i18n.plugin.utils.nullableToList +import com.intellij.patterns.XmlPatterns import com.intellij.psi.PsiElement -import com.intellij.psi.xml.XmlAttribute +import com.intellij.psi.xml.XmlAttributeValue /** * Extracts i18n key from js string literal */ class XmlAttributeKeyExtractor: KeyExtractor { - override fun canExtract(element: PsiElement): Boolean = (element is XmlAttribute) && element.name == "i18nKey" + override fun canExtract(element: PsiElement): Boolean = XmlPatterns.xmlAttributeValue("i18nKey").accepts(element) override fun extract(element: PsiElement): Pair, List?> = Pair( - (element as? XmlAttribute) + (element as? XmlAttributeValue) ?.value .nullableToList() .map {KeyElement.literal(it)},