At work in my current project the customer has delivered their immediate need in the Turkish translation. Our project is multilingual that support English and Turkish. I’ve conducted a research on how to implement a multiple language support on our project, first of all I’ve managed to find Primeface’s prior manual site being hosted on google, there it show the language entries, but no clear sign on implementation.
Then it made me check a few of resources online, and finally I’ve come up with the solution. To explain the dynamics of Primefaces multilingual components is that, English is the default language, for other languages, you need to call a javascript file(s) in your external .js file or in the designated file. In my example I’ve called implemented the js file in the designated file, and return a “tr”/”en” key from the backbean because of the language selection of the users
JSF File
<ui:define name="body"> <link href="#{facesContext.externalContext.requestContextPath}/css/customMember.css" rel="stylesheet" type="text/css" /> <script type="text/javascript"> PrimeFaces.locales['tr'] = { closeText : 'kapat', prevText : 'geri', nextText : 'ileri', currentText : 'bugün', monthNames : [ 'Ocak', 'Şubat', 'Mart', 'Nisan', 'Mayıs', 'Haziran', 'Temmuz', 'Ağustos', 'Eylül', 'Ekim', 'Kasım', 'Aralık' ], monthNamesShort : [ 'Oca', 'Şub', 'Mar', 'Nis', 'May', 'Haz', 'Tem', 'Ağu', 'Eyl', 'Eki', 'Kas', 'Ara' ], dayNames : [ 'Pazar', 'Pazartesi', 'Salı', 'Çarşamba', 'Perşembe', 'Cuma', 'Cumartesi' ], dayNamesShort : [ 'Pz', 'Pt', 'Sa', 'Ça', 'Pe', 'Cu', 'Ct' ], dayNamesMin : [ 'Pz', 'Pt', 'Sa', 'Ça', 'Pe', 'Cu', 'Ct' ], weekHeader : 'Hf', firstDay : 1, isRTL : false, showMonthAfterYear : false, yearSuffix : '', timeOnlyTitle : 'Zaman Seçiniz', timeText : 'Zaman', hourText : 'Saat', minuteText : 'Dakika', secondText : 'Saniye', ampm : false, month : 'Ay', week : 'Hafta', day : 'Gün', allDayText : 'Tüm Gün' }; </script> <p:calendar id="birthdate" value="#{memberController.order.birthdate}" yearRange="c-70:c+10" placeholder="#{msg.member_birthdate}" locale="#{memberController.getCalendarLocale()}" pattern="dd/MM/yyyy" mask="true" effect="fold" widgetVar="birthdateVar" styleClass="#{not component.valid ? 'ui-date-invalid default-input-date' : 'default-input-date'}" required="true" mindate="#{memberController.getBirthdateBegin()}" maxdate="#{memberController.getBirthdateEnd()}" navigator="true"> <f:convertDateTime pattern="dd/MM/yyyy" /> <f:validator binding="#{birthDateValidator}" /> </p:calendar> </ui:define>
Backbean
public String getCalendarLocale() { if (sessionInformation.getLanguage().equals(Language.ENGLISH)) return "en"; else return "tr"; }
Primefaces language entries
https://code.google.com/archive/p/primefaces/wikis/PrimeFacesLocales.wiki
Primefaces Calendar Showcase