From 5f945793d3e2121691b58dc6832229a7bbcaa36d Mon Sep 17 00:00:00 2001
From: Vikhyat Korrapati <vikhyatk@gmail.com>
Date: Tue, 1 Apr 2014 18:32:52 +0530
Subject: [PATCH] Make polls work better on multi-language forums.

---
 plugins/poll/plugin.rb |  4 ++--
 plugins/poll/poll.rb   | 12 ++++++++++++
 2 files changed, 14 insertions(+), 2 deletions(-)

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:
     #