diff --git a/plugins/poll/plugin.rb b/plugins/poll/plugin.rb
index 1bc57a76d..b555a2fd0 100644
--- a/plugins/poll/plugin.rb
+++ b/plugins/poll/plugin.rb
@@ -33,7 +33,7 @@ after_initialize do
 
         post = Post.find(params[:post_id])
         poll = PollPlugin::Poll.new(post)
-        unless poll.is_poll?
+        unless poll.has_poll_details?
           render status: 400, json: false
           return
         end
@@ -102,7 +102,7 @@ after_initialize do
       PollPlugin::Poll.new(object).serialize(scope.user)
     end
     def include_poll_details?
-      PollPlugin::Poll.new(object).is_poll?
+      PollPlugin::Poll.new(object).has_poll_details?
     end
   end
 end
diff --git a/plugins/poll/poll.rb b/plugins/poll/poll.rb
index c7ebfd2f7..9562b3e48 100644
--- a/plugins/poll/poll.rb
+++ b/plugins/poll/poll.rb
@@ -24,6 +24,18 @@ module ::PollPlugin
       topic.title =~ /^#{I18n.t('poll.prefix')}/i
     end
 
+    def has_poll_details?
+      if SiteSetting.allow_user_locale?
+        # If we allow users to select their locale of choice we cannot detect polls
+        # by the prefix, so we fall back to checking if the poll details is set in
+        # places to make sure polls are still accessible by users using a different
+        # locale than the one used by the topic creator.
+        not self.details.nil?
+      else
+        self.is_poll?
+      end
+    end
+
     # Called during validation of poll posts. Discourse already restricts edits to
     # the OP and staff, we want to make sure that:
     #