Search code examples
angularjsangular-translate

Translating words on custom filter


I'm using angular-translate on my project. I can translate words on views by using

But having trouble with my filter:

angular.module('MyModule')
   .filter('weekdays', function () {
        return function (weekday_nums) {
           var weekday_arr = weekday_nums.split("");

  var _weekday_arr = weekday_arr.map(function (day) {
    day = parseInt(day);
    if (isNaN(day)) return;
    if (day === 1) day = "Pzts";
    if (day === 2) day = "Salı";
    if (day === 3) day = "Çar";
    if (day === 4) day = "Per";
    if (day === 5) day = "Cuma";
    if (day === 6) day = "Cmts";
    if (day === 7) day = "Paz";

    return day;
  });

  return _weekday_arr.join(" ");
};
});

I had translations on my en.json file:

   "shortdays": {
"MONDAY": "Mon",
"TUESDAY": "Tue",
"WEDNESDAY": "Wed",
"THURSDAY": "Thu",
"FRIDAY": "Fri",
"SATURDAY": "Sat",
"SUNDAY": "Sun",
"EVERYDAY": "Everyday",
"STARTAT": "Start At",
"ENDAT": "End At"

},

How can i translate dynamically those days?


Solution

  • This doesn't yet reflect how en.json is being used because I'm unfamiliar with angular-translate (which I'll look up now to improve this answer).

    angular.module('MyModule', [])
        .controller("MyCtrl", ["$scope", function ($scope) {
            $scope.sche = {
                weekdays: "Pzts Salı Çar Cuma"
            };
        }])
        .filter('weekdays', function () {
            return function (weekdays) {
                var weekdayArr = weekdays.split(" ");
                var englishWeekdays = weekdayArr.map(function (day) {
                    if (day === "Pzts") return "Mon";
                    if (day === "Salı") return "Tues";
                    if (day === "Çar") return "Wed";
                    if (day === "Per") return "Thurs";
                    if (day === "Cuma") return "Fri";
                    if (day === "Cmts") return "Sat";
                    if (day === "Paz") return "Sun";
                });
    
                console.log(englishWeekdays);
                return englishWeekdays.join(" ");
            };
        });