Merge pull request #4585 from ibnesayeed/urdu-support
Add initial Urdu support with RTL direction
This commit is contained in:
commit
02b21a26dd
|
@ -0,0 +1,3 @@
|
|||
//= depend_on 'client.ur.yml'
|
||||
//= require locales/i18n
|
||||
<%= JsLocaleHelper.output_locale(:ur) %>
|
|
@ -19,7 +19,7 @@ class RTL
|
|||
end
|
||||
|
||||
def rtl_locales
|
||||
%w(he ar fa_IR)
|
||||
%w(he ar ur fa_IR)
|
||||
end
|
||||
|
||||
def css_class
|
||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,98 @@
|
|||
//! moment.js locale configuration
|
||||
//! locale : Urdu [ur]
|
||||
//! author : Sawood Alam : https://github.com/ibnesayeed
|
||||
|
||||
;(function (global, factory) {
|
||||
typeof exports === 'object' && typeof module !== 'undefined'
|
||||
&& typeof require === 'function' ? factory(require('../moment')) :
|
||||
typeof define === 'function' && define.amd ? define(['../moment'], factory) :
|
||||
factory(global.moment)
|
||||
}(this, (function (moment) { 'use strict';
|
||||
|
||||
|
||||
var months = [
|
||||
'جنوری',
|
||||
'فروری',
|
||||
'مارچ',
|
||||
'اپریل',
|
||||
'مئی',
|
||||
'جون',
|
||||
'جولائی',
|
||||
'اگست',
|
||||
'ستمبر',
|
||||
'اکتوبر',
|
||||
'نومبر',
|
||||
'دسمبر'
|
||||
];
|
||||
var days = [
|
||||
'اتوار',
|
||||
'پیر',
|
||||
'منگل',
|
||||
'بدھ',
|
||||
'جمعرات',
|
||||
'جمعہ',
|
||||
'ہفتہ'
|
||||
];
|
||||
|
||||
var ur = moment.defineLocale('ur', {
|
||||
months : months,
|
||||
monthsShort : months,
|
||||
weekdays : days,
|
||||
weekdaysShort : days,
|
||||
weekdaysMin : days,
|
||||
longDateFormat : {
|
||||
LT : 'HH:mm',
|
||||
LTS : 'HH:mm:ss',
|
||||
L : 'DD/MM/YYYY',
|
||||
LL : 'D MMMM YYYY',
|
||||
LLL : 'D MMMM YYYY HH:mm',
|
||||
LLLL : 'dddd، D MMMM YYYY HH:mm'
|
||||
},
|
||||
meridiemParse: /صبح|شام/,
|
||||
isPM : function (input) {
|
||||
return 'شام' === input;
|
||||
},
|
||||
meridiem : function (hour, minute, isLower) {
|
||||
if (hour < 12) {
|
||||
return 'صبح';
|
||||
}
|
||||
return 'شام';
|
||||
},
|
||||
calendar : {
|
||||
sameDay : '[آج بوقت] LT',
|
||||
nextDay : '[کل بوقت] LT',
|
||||
nextWeek : 'dddd [بوقت] LT',
|
||||
lastDay : '[گذشتہ روز بوقت] LT',
|
||||
lastWeek : '[گذشتہ] dddd [بوقت] LT',
|
||||
sameElse : 'L'
|
||||
},
|
||||
relativeTime : {
|
||||
future : '%s بعد',
|
||||
past : '%s قبل',
|
||||
s : 'چند سیکنڈ',
|
||||
m : 'ایک منٹ',
|
||||
mm : '%d منٹ',
|
||||
h : 'ایک گھنٹہ',
|
||||
hh : '%d گھنٹے',
|
||||
d : 'ایک دن',
|
||||
dd : '%d دن',
|
||||
M : 'ایک ماہ',
|
||||
MM : '%d ماہ',
|
||||
y : 'ایک سال',
|
||||
yy : '%d سال'
|
||||
},
|
||||
preparse: function (string) {
|
||||
return string.replace(/،/g, ',');
|
||||
},
|
||||
postformat: function (string) {
|
||||
return string.replace(/,/g, '،');
|
||||
},
|
||||
week : {
|
||||
dow : 1, // Monday is the first day of the week.
|
||||
doy : 4 // The week that contains Jan 4th is the first week of the year.
|
||||
}
|
||||
});
|
||||
|
||||
return ur;
|
||||
|
||||
})));
|
|
@ -0,0 +1,7 @@
|
|||
ur:
|
||||
js:
|
||||
details:
|
||||
title: Hide Details
|
||||
composer:
|
||||
details_title: Summary
|
||||
details_text: "This text will be hidden"
|
|
@ -0,0 +1,3 @@
|
|||
ur:
|
||||
site_settings:
|
||||
details_enabled: "Enable the details plugin. If you change this, you must rebake all posts with: \"rake posts:rebake\"."
|
|
@ -0,0 +1,3 @@
|
|||
ur:
|
||||
site_settings:
|
||||
daily_performance_report: "Analyze NGINX logs daily and post a Staff Only topic with details"
|
|
@ -0,0 +1,89 @@
|
|||
# encoding: utf-8
|
||||
# This file contains content for the client portion of the poll plugin, sent out
|
||||
# to the Javascript app.
|
||||
#
|
||||
# To work with us on translations, see:
|
||||
# https://www.transifex.com/projects/p/discourse-org/
|
||||
#
|
||||
# This is a "source" file, which is used by Transifex to get translations for other languages.
|
||||
# After this file is changed, it needs to be pushed by a maintainer to Transifex:
|
||||
#
|
||||
# tx push -s
|
||||
#
|
||||
# Read more here: https://meta.discourse.org/t/contribute-a-translation-to-discourse/14882
|
||||
#
|
||||
# To validate this YAML file after you change it, please paste it into
|
||||
# http://yamllint.com/
|
||||
|
||||
ur:
|
||||
js:
|
||||
poll:
|
||||
voters:
|
||||
one: "voter"
|
||||
other: "voters"
|
||||
total_votes:
|
||||
one: "total vote"
|
||||
other: "total votes"
|
||||
|
||||
average_rating: "Average rating: <strong>%{average}</strong>."
|
||||
|
||||
public:
|
||||
title: "Votes are public."
|
||||
|
||||
multiple:
|
||||
help:
|
||||
at_least_min_options:
|
||||
one: "Choose at least <strong>1</strong> option"
|
||||
other: "Choose at least <strong>%{count}</strong> options"
|
||||
up_to_max_options:
|
||||
one: "Choose up to <strong>1</strong> option"
|
||||
other: "Choose up to <strong>%{count}</strong> options"
|
||||
x_options:
|
||||
one: "Choose <strong>1</strong> option"
|
||||
other: "Choose <strong>%{count}</strong> options"
|
||||
between_min_and_max_options: "Choose between <strong>%{min}</strong> and <strong>%{max}</strong> options"
|
||||
|
||||
cast-votes:
|
||||
title: "Cast your votes"
|
||||
label: "Vote now!"
|
||||
|
||||
show-results:
|
||||
title: "Display the poll results"
|
||||
label: "Show results"
|
||||
|
||||
hide-results:
|
||||
title: "Back to your votes"
|
||||
label: "Hide results"
|
||||
|
||||
open:
|
||||
title: "Open the poll"
|
||||
label: "Open"
|
||||
confirm: "Are you sure you want to open this poll?"
|
||||
|
||||
close:
|
||||
title: "Close the poll"
|
||||
label: "Close"
|
||||
confirm: "Are you sure you want to close this poll?"
|
||||
|
||||
error_while_toggling_status: "Sorry, there was an error toggling the status of this poll."
|
||||
error_while_casting_votes: "Sorry, there was an error casting your votes."
|
||||
error_while_fetching_voters: "Sorry, there was an error displaying the voters."
|
||||
|
||||
ui_builder:
|
||||
title: Build Poll
|
||||
insert: Insert Poll
|
||||
help:
|
||||
options_count: Enter at least 2 options
|
||||
poll_type:
|
||||
label: Type
|
||||
regular: Single Choice
|
||||
multiple: Multiple Choice
|
||||
number: Number Rating
|
||||
poll_config:
|
||||
max: Max
|
||||
min: Min
|
||||
step: Step
|
||||
poll_public:
|
||||
label: Show who voted
|
||||
poll_options:
|
||||
label: Enter one poll option per line
|
|
@ -0,0 +1,65 @@
|
|||
# encoding: utf-8
|
||||
# This file contains content for the server portion of the poll plugin used by Ruby
|
||||
#
|
||||
# To work with us on translations, see:
|
||||
# https://www.transifex.com/projects/p/discourse-org/
|
||||
#
|
||||
# This is a "source" file, which is used by Transifex to get translations for other languages.
|
||||
# After this file is changed, it needs to be pushed by a maintainer to Transifex:
|
||||
#
|
||||
# tx push -s
|
||||
#
|
||||
# Read more here: https://meta.discourse.org/t/contribute-a-translation-to-discourse/14882
|
||||
#
|
||||
# To validate this YAML file after you change it, please paste it into
|
||||
# http://yamllint.com/
|
||||
|
||||
ur:
|
||||
site_settings:
|
||||
poll_enabled: "Allow users to create polls?"
|
||||
poll_maximum_options: "Maximum number of options allowed in a poll."
|
||||
poll_edit_window_mins: "Number of minutes after post creation during which polls can be edited."
|
||||
|
||||
poll:
|
||||
multiple_polls_without_name: "There are multiple polls without a name. Use the '<code>name</code>' attribute to uniquely identify your polls."
|
||||
multiple_polls_with_same_name: "There are multiple polls with the same name: <strong>%{name}</strong>. Use the '<code>name</code>' attribute to uniquely identify your polls."
|
||||
|
||||
default_poll_must_have_at_least_2_options: "Poll must have at least 2 options."
|
||||
named_poll_must_have_at_least_2_options: "Poll named <strong>%{name}</strong> must have at least 2 options."
|
||||
|
||||
default_poll_must_have_less_options:
|
||||
one: "Poll must have less than 1 option."
|
||||
other: "Poll must have less than %{count} options."
|
||||
named_poll_must_have_less_options:
|
||||
one: "Poll named <strong>%{name}</strong> must have less than 1 option."
|
||||
other: "Poll named <strong>%{name}</strong> must have less than %{count} options."
|
||||
|
||||
default_poll_must_have_different_options: "Poll must have different options."
|
||||
named_poll_must_have_different_options: "Poll named <strong>%{name}</strong> must have different options."
|
||||
|
||||
default_poll_with_multiple_choices_has_invalid_parameters: "Poll with multiple choices has invalid parameters."
|
||||
named_poll_with_multiple_choices_has_invalid_parameters: "Poll named <strong>%{name}</strong> with multiple choice has invalid parameters."
|
||||
|
||||
requires_at_least_1_valid_option: "You must select at least 1 valid option."
|
||||
|
||||
default_cannot_be_made_public: "Poll with votes cannot be made public."
|
||||
named_cannot_be_made_public: "Poll named <strong>%{name}</strong> has votes cannot be made public."
|
||||
|
||||
edit_window_expired:
|
||||
cannot_change_polls: "You cannot add, remove or rename polls after the first %{minutes} minutes."
|
||||
op_cannot_edit_options: "You cannot add or remove poll options after the first %{minutes} minutes. Please contact a moderator if you need to edit a poll option."
|
||||
staff_cannot_add_or_remove_options: "You cannot add or remove poll options after the first %{minutes} minutes. You should close this topic and create a new one instead."
|
||||
|
||||
no_polls_associated_with_this_post: "No polls are associated with this post."
|
||||
no_poll_with_this_name: "No poll named <strong>%{name}</strong> associated with this post."
|
||||
|
||||
post_is_deleted: "Cannot act on a deleted post."
|
||||
|
||||
topic_must_be_open_to_vote: "The topic must be open to vote."
|
||||
poll_must_be_open_to_vote: "Poll must be open to vote."
|
||||
|
||||
topic_must_be_open_to_toggle_status: "The topic must be open to toggle status."
|
||||
only_staff_or_op_can_toggle_status: "Only a staff member or the original poster can toggle a poll status."
|
||||
|
||||
email:
|
||||
link_to_poll: "Click to view the poll."
|
|
@ -0,0 +1,28 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>You can't do that (403)</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<style type="text/css">
|
||||
body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
|
||||
div.dialog {
|
||||
width: 25em;
|
||||
padding: 0 4em;
|
||||
margin: 4em auto 0 auto;
|
||||
border: 1px solid #ccc;
|
||||
border-right-color: #999;
|
||||
border-bottom-color: #999;
|
||||
}
|
||||
h1 { font-size: 400%; color: #f00; line-height: 1em; }
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="dialog">
|
||||
<h1>403</h1>
|
||||
<p>You can't view that resource!</p>
|
||||
|
||||
<p>This will be replaced by a custom Discourse 403 page.</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,27 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>The change you wanted was rejected (422)</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<style type="text/css">
|
||||
body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
|
||||
div.dialog {
|
||||
width: 25em;
|
||||
padding: 0 4em;
|
||||
margin: 4em auto 0 auto;
|
||||
border: 1px solid #ccc;
|
||||
border-right-color: #999;
|
||||
border-bottom-color: #999;
|
||||
}
|
||||
h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<!-- This file lives in public/422.html -->
|
||||
<div class="dialog">
|
||||
<h1>The change you wanted was rejected.</h1>
|
||||
<p>Maybe you tried to change something you didn't have access to.</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,13 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Oops - Error 500</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
</head>
|
||||
<body>
|
||||
<h1>Oops</h1>
|
||||
<p>The software powering this discussion forum encountered an unexpected problem. We apologize for the inconvenience.</p>
|
||||
<p>Detailed information about the error was logged, and an automatic notification generated. We'll take a look at it.</p>
|
||||
<p>No further action is necessary. However, if the error condition persists, you can provide additional detail, including steps to reproduce the error, by posting a discussion topic in the site's feedback category.</p>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,12 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Site Is Undergoing Maintenance - Discourse.org</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
</head>
|
||||
<body>
|
||||
<h1>We are currently down for planned site maintenance</h1>
|
||||
<p>Please check back <span id="when-to-check-back">in a few minutes</span>.</p>
|
||||
<p id="apology">Sorry for the inconvenience!</p>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,22 @@
|
|||
# encoding: utf-8
|
||||
#
|
||||
# This file contains content for the server portion of Discourse used by Ruby
|
||||
#
|
||||
# To work with us on translations, see:
|
||||
# https://www.transifex.com/projects/p/discourse-org/
|
||||
#
|
||||
# This is a "source" file, which is used by Transifex to get translations for other languages.
|
||||
# After this file is changed, it needs to be pushed by a maintainer to Transifex:
|
||||
#
|
||||
# tx push -s
|
||||
#
|
||||
# Read more here: https://meta.discourse.org/t/contribute-a-translation-to-discourse/14882
|
||||
#
|
||||
# To validate this YAML file after you change it, please paste it into
|
||||
# http://yamllint.com/
|
||||
|
||||
ur:
|
||||
site_settings:
|
||||
enable_imgur: "Enable imgur api for uploading, don't host files locally"
|
||||
imgur_client_id: "Your imgur.com client ID, required for image upload to function"
|
||||
imgur_client_secret: "Your imgur.com client secret. Not currently required for image upload to function, but may be at some point."
|
Loading…
Reference in New Issue