diff --git a/src/locale/bg.js b/src/locale/bg.js
--- a/src/locale/bg.js
+++ b/src/locale/bg.js
@@ -9,7 +9,23 @@ const locale = {
   months: 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split('_'),
   monthsShort: 'янр_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'),
   weekStart: 1,
-  ordinal: n => `${n}.`,
+  ordinal: (n) => {
+    const last2Digits = n % 100
+    if (last2Digits > 10 && last2Digits < 20) {
+      return `${n}-ти`
+    }
+
+    const lastDigit = n % 10
+    if (lastDigit === 1) {
+      return `${n}-ви`
+    } else if (lastDigit === 2) {
+      return `${n}-ри`
+    } else if (lastDigit === 7 || lastDigit === 8) {
+      return `${n}-ми`
+    }
+
+    return `${n}-ти`
+  },
   formats: {
     LT: 'H:mm',
     LTS: 'H:mm:ss',
@@ -27,7 +43,7 @@ const locale = {
     h: 'час',
     hh: '%d часа',
     d: 'ден',
-    dd: '%d дни',
+    dd: '%d дена',
     M: 'месец',
     MM: '%d месеца',
     y: 'година',

diff --git a/test/locale/bg.test.js b/test/locale/bg.test.js
new file mode 100644
--- /dev/null
+++ b/test/locale/bg.test.js
@@ -0,0 +1,67 @@
+import moment from 'moment'
+import MockDate from 'mockdate'
+import dayjs from '../../src'
+import relativeTime from '../../src/plugin/relativeTime'
+import advancedFormat from '../../src/plugin/advancedFormat'
+import '../../src/locale/bg'
+
+dayjs.extend(relativeTime)
+dayjs.extend(advancedFormat)
+
+beforeEach(() => {
+  MockDate.set(new Date())
+})
+
+afterEach(() => {
+  MockDate.reset()
+})
+
+it('Format Month with locale function', () => {
+  for (let i = 0; i <= 7; i += 1) {
+    const dayjsBG = dayjs().locale('bg').add(i, 'day')
+    const momentBG = moment().locale('bg').add(i, 'day')
+    const testFormat1 = 'DD MMMM YYYY MMM'
+    const testFormat2 = 'MMMM'
+    const testFormat3 = 'MMM'
+    expect(dayjsBG.format(testFormat1)).toEqual(momentBG.format(testFormat1))
+    expect(dayjsBG.format(testFormat2)).toEqual(momentBG.format(testFormat2))
+    expect(dayjsBG.format(testFormat3)).toEqual(momentBG.format(testFormat3))
+  }
+})
+
+it('RelativeTime: Time from X', () => {
+  const T = [
+    [44.4, 'second'], // a few seconds
+    [89.5, 'second'], // a minute
+    [130, 'second'], // two minutes
+    [43, 'minute'], // 44 minutes
+    [1, 'hour'], // 1 hour
+    [21, 'hour'], // 21 hours
+    [2, 'day'], // 2 days
+    [25, 'day'], // 25 days
+    [2, 'month'], // 2 months
+    [10, 'month'], // 10 months
+    [18, 'month'], // 2 years
+    [15, 'year'] // 15 years
+  ]
+
+  T.forEach((t) => {
+    dayjs.locale('bg')
+    moment.locale('bg')
+    expect(dayjs().from(dayjs().add(t[0], t[1])))
+      .toBe(moment().from(moment().add(t[0], t[1])))
+    expect(dayjs().from(dayjs().add(t[0], t[1]), true))
+      .toBe(moment().from(moment().add(t[0], t[1]), true))
+  })
+})
+
+it('Ordinal', () => {
+  dayjs.locale('bg')
+  moment.locale('bg')
+
+  for (let d = 1; d <= 31; d += 1) {
+    const day = d < 10 ? `0${d}` : d
+    const date = `2021-01-${day}`
+    expect(dayjs(date).format('Do')).toBe(moment(date).format('Do'))
+  }
+})

Implement ordinal in Bulgarian translation
Currently, the ordinal is missing from Bulgarian translation, or more correctly, it is implemented in a wrong way.

Current: `25.`

Expected: `25-ти`

test/timezone.test.js(1) test/timezone.test.js(2) test/timezone.test.js(3) test/timezone.test.js(4)
test/locale/bg.test.js