Skip to content

Commit e9400f0

Browse files
committed
1.0.9.RELEASE
1 parent 8d9ba18 commit e9400f0

16 files changed

+164
-85
lines changed

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11

2-
[![GitHublicense](https://img.shields.io/github/license/mashape/apistatus.svg)](https://github.com/chanmratekoko/mmcalendar/blob/master/LICENSE) [![Maven Central](https://img.shields.io/badge/Maven%20Central-1.0.6.RELEASE-blue.svg)](https://search.maven.org/remote_content?g=com.github.chanmratekoko&a=myanmar-calendar&v=LATEST)
2+
[![GitHublicense](https://img.shields.io/github/license/mashape/apistatus.svg)](https://github.com/chanmratekoko/mmcalendar/blob/master/LICENSE) [![Maven Central](https://img.shields.io/badge/Maven%20Central-1.0.9.RELEASE-blue.svg)](https://search.maven.org/remote_content?g=com.github.chanmratekoko&a=myanmar-calendar&v=LATEST)
33

44
# Myanmar Calendar
55
**Myanmar Calendar** library for Android and Java applications.
@@ -15,15 +15,15 @@ Usage
1515
<dependency>
1616
<groupId>com.github.chanmratekoko</groupId>
1717
<artifactId>myanmar-calendar</artifactId>
18-
<version>1.0.8.RELEASE</version>
18+
<version>1.0.9.RELEASE</version>
1919
</dependency>
2020
```
2121

2222
**2. Gradle dependency**
2323
- Add this to your app `build.gradle`:
2424

2525
```gradle
26-
compile 'com.github.chanmratekoko:myanmar-calendar:1.0.8.RELEASE'
26+
compile 'com.github.chanmratekoko:myanmar-calendar:1.0.9.RELEASE'
2727
```
2828

2929
**3. jar file**

VERSION.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
### 1.0.9.RELEASE
2+
3+
* Change Buddhist Era Calculations
4+
* Update Holidays For 2024
5+
* Bug Fix Myanmar Month Names translations.

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<modelVersion>4.0.0</modelVersion>
55
<groupId>com.github.chanmratekoko</groupId>
66
<artifactId>myanmar-calendar</artifactId>
7-
<version>1.0.8.RELEASE</version>
7+
<version>1.0.9.RELEASE</version>
88
<name>Myanmar Calendar</name>
99
<description>
1010
The Myanmar Calendar Library provides precise calculations for the traditional Burmese calendar system,

src/main/java/mmcalendar/HolidayCalculator.java

Lines changed: 99 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -29,17 +29,20 @@ private HolidayCalculator() {
2929
* <a href="https://en.wikipedia.org/wiki/Chinese_New_Year">Chinese New Year</a>
3030
*/
3131
private static final int[] GH_CHINESE_NEW_YEAR = {2456689, 2456690, 2457073, 2457074, 2457427, 2457428, 2457782,
32-
2457783, 2458166, 2458167};
32+
2457783, 2458166, 2458520, 2458874, 2459257, 2459612, 2459967, 2460351,
33+
2460705, 2461089, 2461443, 2461797, 2462181, 2462536};
3334

3435
/**
3536
* Diwali (ghDiwali)
3637
*/
37-
private static final int[] GH_DIWALI = {2456599, 2456953, 2457337, 2457691, 2458045, 2458429};
38+
private static final int[] GH_DIWALI = {2456599, 2456953, 2457337, 2457691, 2458045, 2458430, 2458784, 2459168,
39+
2459523, 2459877};
3840

3941
/**
4042
* EID ghEid
4143
*/
42-
private static final int[] GH_EID = {2456513, 2456867, 2457221, 2457576, 2457930, 2458285};
44+
private static final int[] GH_EID = {2456513, 2456867, 2457221, 2457576, 2457930, 2458285, 2458640, 2459063,
45+
2459416, 2459702, 2460125, 2460261};
4346

4447
/**
4548
* Check for English Holiday
@@ -53,25 +56,25 @@ static List<String> englishHoliday(int gy, int gm, int gd) {
5356

5457
List<String> holiday = new ArrayList<>();
5558

56-
if (gy >= 2018 && gm == 1 && gd == 1) {
57-
holiday.add("New Year Day");
59+
if ((gy >= 2018 && gy <= 2021) && gm == 1 && gd == 1) {
60+
holiday.add("New Year's Day");
5861
} else if (gy >= 1948 && gm == 1 && gd == 4) {
5962
holiday.add("Independence Day");
6063
} else if (gy >= 1947 && gm == 2 && gd == 12) {
6164
holiday.add("Union Day");
6265
} else if (gy >= 1958 && gm == 3 && gd == 2) {
63-
holiday.add("Peasants Day");
66+
holiday.add("Peasants' Day");
6467
} else if (gy >= 1945 && gm == 3 && gd == 27) {
6568
holiday.add("Resistance Day");
6669
} else if (gy >= 1923 && gm == 5 && gd == 1) {
6770
holiday.add("Labour Day");
6871
} else if (gy >= 1947 && gm == 7 && gd == 19) {
69-
holiday.add("Martyrs Day");
72+
holiday.add("Martyrs' Day");
7073
} else if (gm == 12 && gd == 25) {
7174
holiday.add("Christmas Day");
7275
} else if (gy == 2017 && gm == 12 && gd == 30) {
7376
holiday.add("Holiday");
74-
} else if (gy >= 2017 && gm == 12 && gd == 31) {
77+
} else if ((gy >= 2017 && gy <= 2021) && gm == 12 && gd == 31) {
7578
holiday.add("Holiday");
7679
}
7780

@@ -108,7 +111,7 @@ else if ((mmonth == 7) && (moonPhase == 1)) {
108111
} else if ((myear >= 1282) && (mmonth == 8) && (monthDay == 25)) {
109112
holiday.add("National Day");
110113
} else if ((mmonth == 10) && (monthDay == 1)) {
111-
holiday.add("Karen New Year Day");
114+
holiday.add("Karen New Year's Day");
112115
} else if ((mmonth == 12) && (moonPhase == 1)) {
113116
holiday.add("Tabaung Pwe");
114117
}
@@ -147,7 +150,7 @@ public static List<String> thingyan(double jdn, double myear, int monthType) {
147150
atn = Math.round(ja);
148151

149152
if (Math.abs(jdn - (atn + 1)) < 0.0000001) {
150-
holiday.add("Myanmar New Year Day");
153+
holiday.add("Myanmar New Year's Day");
151154
}
152155

153156
if ((myear + monthType) >= bgntg) {
@@ -162,6 +165,12 @@ public static List<String> thingyan(double jdn, double myear, int monthType) {
162165
} else if (((myear + monthType) >= 1369) && ((myear + monthType) < 1379)
163166
&& ((jdn == (akn - 2)) || ((jdn >= (atn + 2)) && (jdn <= (akn + 7))))) {
164167
holiday.add("Holiday");
168+
} else if ((((myear + monthType) >= 1384) && (myear + monthType) <= 1385)
169+
&& ((jdn == (akn - 5)) || (jdn == (akn - 4)) || (jdn == (akn - 3)) || (jdn == (akn - 2)))) {
170+
holiday.add("Holiday");
171+
} else if ((myear + monthType) >= 1386
172+
&& (((jdn >= (atn + 2)) && (jdn <= (akn + 7))))) {
173+
holiday.add("Holiday");
165174
}
166175
}
167176

@@ -188,6 +197,28 @@ public static List<String> getOtherHolidays(double jd) {
188197
return holiday;
189198
}
190199

200+
private static List<String> getSubstituteHoliday(double jd) {
201+
202+
List<String> holiday = new ArrayList<>();
203+
204+
int[] substituteHoliday = {
205+
// 2019
206+
2458768, 2458772, 2458785, 2458800,
207+
// 2020
208+
2458855, 2458918, 2458950, 2459051, 2459062,
209+
2459152, 2459156, 2459167, 2459181, 2459184,
210+
// 2021
211+
2459300, 2459303, 2459323, 2459324,
212+
2459335, 2459548, 2459573,
213+
};
214+
215+
if (BinarySearchUtil.search(jd, substituteHoliday) >= 0) {
216+
holiday.add("Holiday");
217+
}
218+
219+
return holiday;
220+
}
221+
191222
/**
192223
* Anniversary day
193224
*
@@ -202,43 +233,43 @@ private static List<String> getAnniversaryDay(double jd, CalendarType calendarTy
202233
calendarType = CalendarType.ENGLISH;
203234
}
204235

205-
List<String> holiday = new ArrayList<>();
236+
List<String> anniversary = new ArrayList<>();
206237

207238
WesternDate wd = WesternDate.of(jd, calendarType);
208239
double doe = dateOfEaster(wd.getYear());
209240

210241
if ((wd.getYear() <= 2017) && (wd.getMonth() == 1) && (wd.getDay() == 1)) {
211-
holiday.add("New Year Day");
242+
anniversary.add("New Year Day");
212243
} else if ((wd.getYear() >= 1915) && (wd.getMonth() == 2) && (wd.getDay() == 13)) {
213-
holiday.add("G. Aung San BD");
244+
anniversary.add("G. Aung San BD");
214245
} else if ((wd.getYear() >= 1969) && (wd.getMonth() == 2) && (wd.getDay() == 14)) {
215-
holiday.add("Valentines Day");
246+
anniversary.add("Valentines Day");
216247
} else if ((wd.getYear() >= 1970) && (wd.getMonth() == 4) && (wd.getDay() == 22)) {
217-
holiday.add("Earth Day");
248+
anniversary.add("Earth Day");
218249
} else if ((wd.getYear() >= 1392) && (wd.getMonth() == 4) && (wd.getDay() == 1)) {
219-
holiday.add("April Fools Day");
250+
anniversary.add("April Fools' Day");
220251
} else if ((wd.getYear() >= 1948) && (wd.getMonth() == 5) && (wd.getDay() == 8)) {
221-
holiday.add("Red Cross Day");
252+
anniversary.add("Red Cross Day");
222253
} else if ((wd.getYear() >= 1994) && (wd.getMonth() == 10) && (wd.getDay() == 5)) {
223-
holiday.add("World Teachers Day");
254+
anniversary.add("World Teachers' Day");
224255
} else if ((wd.getYear() >= 1947) && (wd.getMonth() == 10) && (wd.getDay() == 24)) {
225-
holiday.add("United Nations Day");
256+
anniversary.add("United Nations Day");
226257
} else if ((wd.getYear() >= 1753) && (wd.getMonth() == 10) && (wd.getDay() == 31)) {
227-
holiday.add("Halloween");
258+
anniversary.add("Halloween");
228259
}
229260

230261
if ((wd.getYear() >= 1876) && (jd == doe)) {
231-
holiday.add("Easter");
262+
anniversary.add("Easter");
232263
} else if ((wd.getYear() >= 1876) && (jd == (doe - 2))) {
233-
holiday.add("Good Friday");
264+
anniversary.add("Good Friday");
234265
} else if (BinarySearchUtil.search(jd, GH_EID_2) >= 0) {
235-
holiday.add("Eid");
266+
anniversary.add("Eid");
236267
}
237268
if (BinarySearchUtil.search(jd, GH_CHINESE_NEW_YEAR) >= 0) {
238-
holiday.add("Chinese New Year");
269+
anniversary.add("Chinese New Year's");
239270
}
240271

241-
return holiday;
272+
return anniversary;
242273
}
243274

244275
/**
@@ -284,12 +315,12 @@ private static List<String> getMyanmarAnniversaryDay(double myear, int mmonth, i
284315
List<String> holiday = new ArrayList<>();
285316

286317
if ((myear >= 1309) && (mmonth == 11) && (monthDay == 16)) {
287-
holiday.add("Mon National Day");
318+
holiday.add("'Mon' National Day");
288319
} // the ancient founding of Hanthawady
289320
else if ((mmonth == 9) && (monthDay == 1)) {
290-
holiday.add("Shan New Year Day");
321+
holiday.add("Shan New Year's Day");
291322
if (myear >= 1306) {
292-
holiday.add("Authors Day");
323+
holiday.add("Authors' Day");
293324
}
294325
} // Nadaw waxing moon 1
295326
else if ((mmonth == 3) && (moonPhase == 1)) {
@@ -299,10 +330,10 @@ else if ((mmonth == 6) && (moonPhase == 1)) {
299330
holiday.add("Garudhamma Day");
300331
} // Tawthalin full moon
301332
else if ((myear >= 1356) && (mmonth == 10) && (moonPhase == 1)) {
302-
holiday.add("Mothers Day");
333+
holiday.add("Mothers' Day");
303334
} // Pyatho full moon
304335
else if ((myear >= 1370) && (mmonth == 12) && (moonPhase == 1)) {
305-
holiday.add("Fathers Day");
336+
holiday.add("Fathers' Day");
306337
} // Tabaung full moon
307338
else if ((mmonth == 5) && (moonPhase == 1)) {
308339
holiday.add("Metta Day");
@@ -322,15 +353,24 @@ else if ((mmonth == 5) && (monthDay == 23)) {
322353
* @return List of holiday String
323354
*/
324355
public static List<String> getHoliday(MyanmarDate myanmarDate) {
325-
return getHoliday(myanmarDate, Config.getInstance().getCalendarType());
356+
return getHoliday(myanmarDate, Config.getInstance().getLanguage());
357+
}
358+
359+
/**
360+
* @param myanmarDate MyanmarDate
361+
* @param language Language
362+
* @return List of holiday String
363+
*/
364+
public static List<String> getHoliday(MyanmarDate myanmarDate, Language language) {
365+
return getHoliday(myanmarDate, Config.getInstance().getCalendarType(), language);
326366
}
327367

328368
/**
329369
* @param myanmarDate MyanmarDate
330370
* @param calendarType CalendarType
331371
* @return List of holiday String
332372
*/
333-
public static List<String> getHoliday(MyanmarDate myanmarDate, CalendarType calendarType) {
373+
public static List<String> getHoliday(MyanmarDate myanmarDate, CalendarType calendarType, Language language) {
334374

335375
WesternDate westernDate = WesternDate.of(myanmarDate.getJulianDayNumber(), calendarType);
336376
// Office Off
@@ -342,10 +382,18 @@ public static List<String> getHoliday(MyanmarDate myanmarDate, CalendarType cale
342382

343383
List<String> holiday = new ArrayList<>();
344384

345-
holiday.addAll(hde);
346-
holiday.addAll(hdm);
347-
holiday.addAll(hdt);
348-
holiday.addAll(hdo);
385+
holiday.addAll(LanguageTranslator.translateSentenceList(hde, Language.ENGLISH, language));
386+
387+
holiday.addAll(LanguageTranslator.translateSentenceList(hdm, Language.ENGLISH, language));
388+
389+
holiday.addAll(LanguageTranslator.translateSentenceList(hdt, Language.ENGLISH, language));
390+
391+
holiday.addAll(LanguageTranslator.translateSentenceList(hdo, Language.ENGLISH, language));
392+
393+
if (westernDate.getYear() >= 2019 && westernDate.getYear() <= 2021) {
394+
List<String> substituteHoliday = getSubstituteHoliday(myanmarDate.getJulianDayNumber());
395+
holiday.addAll(LanguageTranslator.translateSentenceList(substituteHoliday, Language.ENGLISH, language));
396+
}
349397

350398
return holiday;
351399
}
@@ -363,24 +411,33 @@ public static boolean isHoliday(MyanmarDate myanmarDate) {
363411
* @return List of holiday String
364412
*/
365413
public static List<String> getAnniversary(MyanmarDate myanmarDate) {
366-
return getAnniversary(myanmarDate, Config.getInstance().getCalendarType());
414+
return getAnniversary(myanmarDate, Config.getInstance().getCalendarType(), Config.getInstance().getLanguage());
415+
}
416+
417+
/**
418+
* @param myanmarDate MyanmarDate Object
419+
* @param language Language
420+
* @return List of holiday String
421+
*/
422+
public static List<String> getAnniversary(MyanmarDate myanmarDate, Language language) {
423+
return getAnniversary(myanmarDate, Config.getInstance().getCalendarType(), language);
367424
}
368425

369426
/**
370427
* @param myanmarDate MyanmarDate
371428
* @param calendarType CalendarType
372429
* @return List of holiday String
373430
*/
374-
public static List<String> getAnniversary(MyanmarDate myanmarDate, CalendarType calendarType) {
431+
public static List<String> getAnniversary(MyanmarDate myanmarDate, CalendarType calendarType, Language language) {
375432
List<String> ecd = getAnniversaryDay(myanmarDate.getJulianDayNumber(), calendarType); // anniversary day
376433
List<String> mcd = getMyanmarAnniversaryDay(myanmarDate.getYearValue(), myanmarDate.getMonth(), myanmarDate.getDayOfMonth(), myanmarDate.getMoonPhaseValue());
377434

378-
List<String> holiday = new ArrayList<>();
435+
List<String> anniversary = new ArrayList<>();
379436

380-
holiday.addAll(ecd);
381-
holiday.addAll(mcd);
437+
anniversary.addAll(LanguageTranslator.translateSentenceList(ecd, Language.ENGLISH, language));
438+
anniversary.addAll(LanguageTranslator.translateSentenceList(mcd, Language.ENGLISH, language));
382439

383-
return holiday;
440+
return anniversary;
384441
}
385442

386443
}

src/main/java/mmcalendar/Language.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ public enum Language {
1111
ZAWGYI(2, "၊ ", "။ "),
1212
MON(3, "၊ ", "။ "),
1313
TAI(4, "၊ ", "။ "),
14-
KAREN(5, "၊ ", "။ ");
14+
SGAW_KAREN(5, "၊ ", "။ ");
1515

1616
private final int languageIndex;
1717

src/main/java/mmcalendar/LanguageTranslator.java

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
package mmcalendar;
22

3+
import java.util.List;
4+
import java.util.stream.Collectors;
5+
36
/**
47
* Language Translator
58
*
@@ -59,7 +62,7 @@ public class LanguageTranslator {
5962
{"Mahayatkyan", "မဟာရက်ကြမ်း", "မဟာရက္ၾကမ္း", "ကိုန်ဟွံခိုဟ်", "မဟာရက်ကြမ်း", "မဟာရက်ကြမ်း"},
6063
{"Nagapor", "နဂါးပေါ်", "နဂါးေပၚ", "နာ်မံက်", "နဂါးပေါ်", "နဂါးပေါ်"},
6164
{"Shanyat", "ရှမ်းရက်", "ရွမ္းရက္", "တ္ၚဲဒတန်", "ရှမ်းရက်", "ရှမ်းရက်"},
62-
{"Mooon", "မွန်", "မြန္", "ပၠန်", "မွၼ်း", "မွန်"},
65+
{"'Mon'", "မွန်", "မြန္", "ပၠန်", "မွၼ်း", "မွန်"},
6366
{"G. Aung San BD", "ဗိုလ်ချုပ်မွေးနေ့", "ဗိုလ္ခ်ဳပ္ေမြးေန႔", "တ္ၚဲသၟိၚ်ဗၟာ အံၚ်သာန်ဒှ်မၞိဟ်", "ဝၼ်းၵိူတ်ၸွမ်သိုၵ်", "ဗိုလ်ချုပ်မွေးနေ့"},
6467
{"Valentines", "ချစ်သူများ", "ခ်စ္သူမ်ား", "ဝုတ်ဗၠာဲ", "ၵေႃႈႁၵ်ႉ", "ချစ်သူများ"},
6568
{"Earth", "ကမ္ဘာမြေ", "ကမၻာေျမ", "ဂၠးကဝ်", "လိၼ်မိူင်း", "ကမ္ဘာမြေ"},
@@ -205,7 +208,7 @@ private LanguageTranslator() {
205208
*/
206209
private static String translateSentence(String str, int fromLn, int toLn) {
207210
for (String[] dic : CATALOG) {
208-
str = str.replace(dic[fromLn], dic[toLn]);
211+
str = str.replaceAll(dic[fromLn], dic[toLn]);
209212
}
210213
return str;
211214
}
@@ -237,6 +240,21 @@ private static String translate(String str, int fromLn, int toLn) {
237240
return str;
238241
}
239242

243+
/**
244+
* Translate sentence to the specific language
245+
*
246+
* @param list Sentence List
247+
* @param from Translate Language from
248+
* @param to Translate Language to
249+
* @return translated result
250+
*/
251+
public static List<String> translateSentenceList(List<String> list, Language from, Language to) {
252+
return list.stream()
253+
.map(it ->
254+
LanguageTranslator.translateSentence(it, from, to)
255+
).collect(Collectors.toList());
256+
}
257+
240258
/**
241259
* Translate sentence to the specific language
242260
*

0 commit comments

Comments
 (0)