

(function(globals) {

  var django = globals.django || (globals.django = {});

  
  django.pluralidx = function(n) {
    var v=(n != 1);
    if (typeof(v) == 'boolean') {
      return v ? 1 : 0;
    } else {
      return v;
    }
  };
  

  /* gettext library */

  django.catalog = django.catalog || {};
  
  var newcatalog = {
    " of ": " of ",
    ", in ": ", in ",
    "1 active filter": "1 active filter",
    "3D Route Preview": "3D Route Preview",
    "A cancel reason must be given.": "A cancel reason must be given.",
    "Active filters": "Active filters",
    "Active paying subscribers": "Yearly Subscribers",
    "Add destination": "Add destination",
    "Add to favorites": "Add to favorites",
    "Add training entry": "Add training entry",
    "Adding a description text and some tags will help you to easily find and categorize your collection later.": "Adding a description text and some tags will help you to easily find and categorize your collection later.",
    "Advanced Cycling Maps": "Advanced Cycling Maps",
    "All current subscribers (excl. trials)": "All current subscribers (excl. trials)",
    "All routes in": "All routes in",
    "An Error occurred while fetching data, please try refreshing the page!": "An Error occurred while fetching data, please try refreshing the page!",
    "An error occurred while processing your transaction. Please contact <a href=\"mailto:office@bikemap.net\">support</a>": "An error occurred while processing your transaction. Please contact <a href=\"mailto:office@bikemap.net\">support</a>",
    "An unexpected error has occurred, please try again later": "An unexpected error has occurred, please try again later",
    "An unexpected error has occurred, please try again later.": "An unexpected error has occurred, please try again later.",
    "Android": "Android",
    "Apple": "Apple",
    "Are you sure you want to cancel your registration?": "Are you sure you want to cancel your registration?",
    "Are you sure you want to leave the route editor? Unsaved changes to your route will be lost.": "Are you sure you want to leave the route editor? Unsaved changes to your route will be lost.",
    "Are you sure?": "Are you sure?",
    "Are you sure? By downgrading your account, you will lose your downloaded Offline maps and access to all Bikemap Premium features:": "Are you sure? By downgrading your account, you will lose your downloaded Offline maps and access to all Bikemap Premium features:",
    "Ascent": "Ascent",
    "Authorize Garmin Connect to sync your cycling routes to Bikemap.": "Authorize Garmin Connect to sync your cycling routes to Bikemap.",
    "Avatar": "Avatar",
    "Back to cycling? You can reactivate your Bikemap Premium membership now to get access to all exclusive features again.": "Back to cycling? You can reactivate your Bikemap Premium membership now to get access to all exclusive features again.",
    "Beautiful.": "Beautiful.",
    "Bike Paths": "Bike Paths",
    "Bike type": "Bike type",
    "Bike-Type Optimized Routing": "Bike-Type Optimized Routing",
    "Billing Details": "Billing Details",
    "Cancel": "Cancel",
    "Cancel Membership": "Cancel Membership",
    "Cancel Subscription": "Cancel Subscription",
    "Choose authentication method": "Choose authentication method",
    "Close": "Close",
    "Confirm": "Confirm",
    "Congratulations": "Congratulations",
    "Connect Garmin with Bikemap": "Connect Garmin with Bikemap",
    "Continue with Apple": "Continue with Apple",
    "Continue with Facebook": "Continue with Facebook",
    "Continue with Google": "Continue with Google",
    "Continue with your mail": "Continue with your mail",
    "Couldn't remove route from collection.": "Couldn't remove route from collection.",
    "Count": "Count",
    "Create new collection": "Create new collection",
    "Currently not cycling?": "Currently not cycling?",
    "Delete Account": "Delete Account",
    "Delete comment": "Delete comment",
    "Delete cover picture": "Delete cover picture",
    "Delete profile picture": "Delete profile picture",
    "Delete route": "Delete route",
    "Delete route collection": "Delete route collection",
    "Delete training entry": "Delete training entry",
    "Descent": "Descent",
    "Destination": "Destination",
    "Details must be given if you select other reason.": "Details must be given if you select other reason.",
    "Didn't meet my expectations.": "Didn't meet my expectations.",
    "Disconnect": "Disconnect",
    "Discover the world's largest collection of cycle routes or plan your own route worldwide.": "Discover the world's largest collection of cycle routes or plan your own route worldwide.",
    "Distance": "Distance",
    "Do you really want to delete this comment?": "Do you really want to delete this comment?",
    "Do you really want to delete this route collection?": "Do you really want to delete this route collection?",
    "Do you really want to delete this route from the collection?": "Do you really want to delete this route from the collection?",
    "Do you really want to delete this route?": "Do you really want to delete this route?",
    "Do you really want to delete your Bikemap account?": "Do you really want to delete your Bikemap account?",
    "Do you really want to delete your cover picture?": "Do you really want to delete your cover picture?",
    "Do you really want to delete your profile picture?": "Do you really want to delete your profile picture?",
    "Do you really want to remove this training entry?": "Do you really want to remove this training entry?",
    "Downgrade": "Downgrade",
    "Drag to reorder": "Drag to reorder",
    "E-Mail": "E-Mail",
    "Edit training entry": "Edit training entry",
    "Embed this map into your own website": "Embed this map into your own website",
    "End tutorial": "End tutorial",
    "Enter a location to see the map of that place:": "Enter a location to see the map of that place:",
    "Enter a nice title and hit 'next'.": "Enter a nice title and hit 'next'.",
    "Enter an address or click on the map": "Enter an address or click on the map",
    "Enter some description text and/or tags and hit \"next\".": "Enter some description text and/or tags and hit \"next\".",
    "Enter your information for your new Bikemap account": "Enter your information for your new Bikemap account",
    "Error": "Error",
    "Error while saving route": "Error while saving route",
    "Error: Server Error": "Error: Server Error",
    "Facebook": "Facebook",
    "Fall Detection": "Fall Detection",
    "Filters": "Filters",
    "First, let's set a meaningful title.": "First, let's set a meaningful title.",
    "From": "From",
    "Garmin Connect": "Garmin Connect",
    "Geolocate": "Geolocate",
    "Go to city or address": "Go to city or address",
    "Go to:": "Go to:",
    "Google": "Google",
    "Google Hybrid": "Google Hybrid",
    "Google Roadmap": "Google Roadmap",
    "Gorgeous!": "Gorgeous!",
    "Heatmap": "Heatmap",
    "Hide Search Matches": "Hide Search Matches",
    "I'm having too many technical issues.": "I'm having too many technical issues.",
    "I'm not using it enough.": "I'm not using it enough.",
    "Invalid payment details": "Invalid payment details",
    "It wouldn't be the same without you. Could you tell us why you want to cancel?": "It wouldn't be the same without you. Could you tell us why you want to cancel?",
    "Length": "Length",
    "Let's walk through this screen and set up a cool collection in 5 quick steps.": "Let's walk through this screen and set up a cool collection in 5 quick steps.",
    "Lifetime Subscribers": "Lifetime Subscribers",
    "List view": "List view",
    "Looks like you lost your internet connection. Please try again.": "Looks like you lost your internet connection. Please try again.",
    "Lovely.": "Lovely.",
    "Make sure to add a title image that represents the beauty of your routes.": "Make sure to add a title image that represents the beauty of your routes.",
    "Map style": "Map style",
    "Map view": "Map view",
    "Membership could not be paused": "Membership could not be paused",
    "Membership could not be reactivated": "Membership could not be reactivated",
    "Merge Account": "Merge Account",
    "Monthly Subscribers": "Monthly Subscribers",
    "Navigate to": "Navigate to",
    "New Route created": "New Route created",
    "Next": "Next",
    "No charge while your membership is paused.": "No charge while your membership is paused.",
    "No connection": "No connection",
    "No route could be found": "No route could be found",
    "No routes added to this collection yet.": "No routes added to this collection yet.",
    "No routes found \ud83d\ude14": "No routes found \ud83d\ude14",
    "No, please cancel": "No, please cancel",
    "Now choose a visibility setting for your collection.": "Now choose a visibility setting for your collection.",
    "OK, let's go": "OK, let's go",
    "Offline Maps & Navigation": "Offline Maps & Navigation",
    "Oh no. An Error occurred while uploading %s, the server responded with: %s": "Oh no. An Error occurred while uploading %s, the server responded with: %s",
    "Oh no. An Error occurred while uploading %s. %s": "Oh no. An Error occurred while uploading %s. %s",
    "Only JPG and PNG files are supported.": "Only JPG and PNG files are supported.",
    "OpenCycleMap": "OpenCycleMap",
    "Other": "Other",
    "Other Subscribers": "Other Subscribers",
    "Pause once for up to 2 months.": "Pause once for up to 2 months.",
    "Pay once and get access to all exclusive Bikemap Premium features for a lifetime. Enjoy all advantages without expiry date for {price}.": "Pay once and get access to all exclusive Bikemap Premium features for a lifetime. Enjoy all advantages without expiry date for {price}.",
    "Payment error": "Payment error",
    "Payment failed": "Payment failed",
    "Permalink to this definition": "Permalink to this definition",
    "Permalink to this headline": "Permalink to this headline",
    "Please check this box to delete your account.": "Please check this box to delete your account.",
    "Please correct the errors in the form!": "Please correct the errors in the form!",
    "Please make sure to fill in complete and correct credit card details.": "Please make sure to fill in complete and correct credit card details.",
    "Please provide a title for your route collection!": "Please provide a title for your route collection!",
    "Please provide further details.": "Please provide further details.",
    "Please use another payment method or try again.": "Please use another payment method or try again.",
    "Please wait until this process has completed.": "Please wait until this process has completed.",
    "Popularity": "Popularity",
    "Premium Support": "Premium Support",
    "Preparing search...": "Preparing search...",
    "Private collections can only be seen by you while public collections can be seen by all Bikemap users.": "Private collections can only be seen by you while public collections can be seen by all Bikemap users.",
    "Pro tip": "Pro tip",
    "Reactivate Bikemap Premium anytime.": "Reactivate Bikemap Premium anytime.",
    "Reactivate Membership": "Reactivate Membership",
    "Relevance": "Relevance",
    "Relief Map": "Relief Map",
    "Remove from favorites": "Remove from favorites",
    "Remove route": "Remove route",
    "Remove this filter": "Remove this filter",
    "Reset Search": "Reset Search",
    "Reset bearing to north": "Reset bearing to north",
    "Round-trip route": "Round-trip route",
    "Route Title": "Route Title",
    "Route details": "Route details",
    "Route from here": "Route from here",
    "Route image ": "Route image ",
    "Route title": "Route title",
    "Route to here": "Route to here",
    "Route type": "Route type",
    "Save": "Save",
    "Search": "Search",
    "Search Results": "Search Results",
    "Search all {object}.": "Search all {object}.",
    "Search as I move the map": "Search as I move the map",
    "Search finished, found %s page(s) matching the search query.": "Search finished, found %s page(s) matching the search query.",
    "Search for routes in...": "Search for routes in...",
    "Search for some routes and use the <em>Add to</em> button to add them to your collection.": "Search for some routes and use the <em>Add to</em> button to add them to your collection.",
    "Searching": "Searching",
    "Send this route to your friends": "Send this route to your cycling buddies",
    "Sent to mobile": "Sent to mobile",
    "Show more": "Show more",
    "Show official routes": "Show official routes",
    "Sign up for free and add routes to your favorites": "Sign up for free and add routes to your favorites",
    "Sign up for free to add routes to collections": "Sign up for free to add routes to collections",
    "Sign up for free to add routes to your training log": "Sign up for free to add routes to your training log",
    "Sign up for free to comment.": "Sign up for free to comment.",
    "Sign up for free to download planned routes.": "Sign up for free to download planned routes.",
    "Sign up for free to download this route": "Sign up for free to download this route",
    "Sign up for free to mark routes as ridden": "Sign up for free to mark routes as ridden",
    "Sign up for free to print this route": "Sign up for free to print this route",
    "Sign up for free to save this route": "Sign up for free to save this route",
    "Sign up for free to send planned routes to your mobile device.": "Sign up for free to send planned routes to your mobile device.",
    "Sign up for free to share this route": "Sign up for free to share this route",
    "Sign up here": "Sign up here",
    "Signups": "Signups",
    "Signups per method": "Signups per method",
    "Signups per platform": "Signups per platform",
    "Skip": "Skip",
    "Sort by": "Sort by",
    "Start": "Start",
    "Start free trial": "Start free trial",
    "Starting point": "Starting point",
    "Stay Premium": "Stay Premium",
    "Subscribers": "Subscribers",
    "Successfully sent the route to your app.": "Successfully sent the route to your app.",
    "Successfully sent the route via email to your mobile.": "Successfully sent the route via email to your mobile.",
    "Surface": "Surface",
    "The last thing to do is to add some routes.": "The last thing to do is to add some routes.",
    "There aren't any routes matching your search criteria. Try adjusting your filters or search for another route title.": "There aren't any routes matching your search criteria. Try adjusting your filters or search for another route title.",
    "There was an error while trying to send your route to your mobile.": "There was an error while trying to send your route to your mobile.",
    "There was an unexpected error. We are sorry! Please try again!": "There was an unexpected error. We are sorry! Please try again!",
    "There will be no refund for the remaining days if you delete your account now.": "There will be no refund for the remaining days if you delete your account now.",
    "This area sums up various statistics of all routes within a collection.": "This area sums up various statistics of all routes within a collection.",
    "This cannot be undone!": "This cannot be undone!",
    "This file exceeds the maximum allowed filesize ({{maxFilesize}} MiB): {{filesize}} MiB": "This file exceeds the maximum allowed filesize ({{maxFilesize}} MiB): {{filesize}} MiB",
    "This is a route collection. Route collections are a great way to organize routes.": "This is a route collection. Route collections are a great way to organize routes.",
    "To": "To",
    "Toggle fullscreen": "Toggle fullscreen",
    "Too complicated.": "Too complicated.",
    "Too expensive.": "Too expensive.",
    "Total": "Total",
    "Trial Subscribers": "Trial Subscribers",
    "Unlock all exclusive features with Bikemap Premium": "Unlock all exclusive features with Bikemap Premium",
    "Upgrade Membership": "Upgrade Membership",
    "Upload Failed": "Upload Failed",
    "Upload failed": "Upload failed",
    "Use current route as template": "Use current route as template",
    "Voucher": "Voucher",
    "Waiting for SOFORT Payment": "Waiting for SOFORT Payment",
    "Watch the ascent value and make sure not to overestimate yourself when adding routes to your \"Trans-Alps Crossing\" collection... ;-)": "Watch the ascent value and make sure not to overestimate yourself when adding routes to your \"Trans-Alps Crossing\" collection... ;-)",
    "Web": "Web",
    "Welcome back!": "Welcome back!",
    "Welcome to Bikemap": "Welcome to Bikemap",
    "Whole route": "Whole route",
    "Yearly Subscribers": "Yearly Subscribers",
    "Yes, pause membership": "Yes, pause membership",
    "Yes, upgrade now": "Yes, upgrade now",
    "You can pause your membership and simply reactivate Bikemap Premium at a later point in time.": "You can pause your membership and simply reactivate Bikemap Premium at a later point in time.",
    "You have an <strong>active Bikemap Premium membership</strong>.": "You have an <strong>active Bikemap Premium membership</strong>.",
    "You have been disconnected from Garmin Connect.": "You have been disconnected from Garmin Connect.",
    "You need a free Bikemap account first.": "You need a free Bikemap account first.",
    "You're all set!": "You're all set!",
    "Your Garmin activities will no longer sync with your Bikemap profile. This will not affect any previously synced Garmin activities.": "Your Garmin activities will no longer sync with your Bikemap profile. This will not affect any previously synced Garmin activities.",
    "Your payment was not successful. Please try again.": "Your payment was not successful. Please try again.",
    "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.",
    "Zoom in": "Zoom in",
    "Zoom out": "Zoom out",
    "any": "any",
    "create new": "create new",
    "downhill routes": "downhill routes",
    "dp.change": "dp.change",
    "dp.classify": "dp.classify",
    "dp.error": "dp.error",
    "dp.hide": "dp.hide",
    "dp.show": "dp.show",
    "dp.update": "dp.update",
    "field": "field",
    "flat routes": "flat routes",
    "ft": "ft",
    "hilly routes": "hilly routes",
    "iOS": "iOS",
    "m": "m",
    "operator": "operator",
    "private": "private",
    "public": "public",
    "root": "root",
    "routes": "routes",
    "routes with {minAsc} - {maxAsc} % ascent and {minDesc} - {maxDesc} % descent": "routes with {minAsc} - {maxAsc} % ascent and {minDesc} - {maxDesc} % descent",
    "routes with {min} - {max} % ascent": "routes with {min} - {max} % ascent",
    "routes with {min} - {max} % descent": "routes with {min} - {max} % descent",
    "save": "save",
    "uphill routes": "uphill routes",
    "value": "value",
    "{count} routes": "{count} routes",
    "{first} - {last} of {count} routes": "{first} - {last} of {count} routes",
    "{num} active filters": "{num} active filters"
  };
  for (var key in newcatalog) {
    django.catalog[key] = newcatalog[key];
  }
  

  if (!django.jsi18n_initialized) {
    django.gettext = function(msgid) {
      var value = django.catalog[msgid];
      if (typeof(value) == 'undefined') {
        return msgid;
      } else {
        return (typeof(value) == 'string') ? value : value[0];
      }
    };

    django.ngettext = function(singular, plural, count) {
      var value = django.catalog[singular];
      if (typeof(value) == 'undefined') {
        return (count == 1) ? singular : plural;
      } else {
        return value.constructor === Array ? value[django.pluralidx(count)] : value;
      }
    };

    django.gettext_noop = function(msgid) { return msgid; };

    django.pgettext = function(context, msgid) {
      var value = django.gettext(context + '\x04' + msgid);
      if (value.indexOf('\x04') != -1) {
        value = msgid;
      }
      return value;
    };

    django.npgettext = function(context, singular, plural, count) {
      var value = django.ngettext(context + '\x04' + singular, context + '\x04' + plural, count);
      if (value.indexOf('\x04') != -1) {
        value = django.ngettext(singular, plural, count);
      }
      return value;
    };

    django.interpolate = function(fmt, obj, named) {
      if (named) {
        return fmt.replace(/%\(\w+\)s/g, function(match){return String(obj[match.slice(2,-2)])});
      } else {
        return fmt.replace(/%s/g, function(match){return String(obj.shift())});
      }
    };


    /* formatting library */

    django.formats = {
    "DATETIME_FORMAT": "N j, Y, P",
    "DATETIME_INPUT_FORMATS": [
      "%Y-%m-%d %H:%M:%S",
      "%Y-%m-%d %H:%M:%S.%f",
      "%Y-%m-%d %H:%M",
      "%Y-%m-%d",
      "%m/%d/%Y %H:%M:%S",
      "%m/%d/%Y %H:%M:%S.%f",
      "%m/%d/%Y %H:%M",
      "%m/%d/%Y",
      "%m/%d/%y %H:%M:%S",
      "%m/%d/%y %H:%M:%S.%f",
      "%m/%d/%y %H:%M",
      "%m/%d/%y"
    ],
    "DATE_FORMAT": "N j, Y",
    "DATE_INPUT_FORMATS": [
      "%Y-%m-%d",
      "%m/%d/%Y",
      "%m/%d/%y"
    ],
    "DECIMAL_SEPARATOR": ".",
    "FIRST_DAY_OF_WEEK": 0,
    "MONTH_DAY_FORMAT": "F j",
    "NUMBER_GROUPING": 3,
    "SHORT_DATETIME_FORMAT": "m/d/Y P",
    "SHORT_DATE_FORMAT": "m/d/Y",
    "THOUSAND_SEPARATOR": ",",
    "TIME_FORMAT": "P",
    "TIME_INPUT_FORMATS": [
      "%H:%M:%S",
      "%H:%M:%S.%f",
      "%H:%M"
    ],
    "YEAR_MONTH_FORMAT": "F Y"
  };

    django.get_format = function(format_type) {
      var value = django.formats[format_type];
      if (typeof(value) == 'undefined') {
        return format_type;
      } else {
        return value;
      }
    };

    /* add to global namespace */
    globals.pluralidx = django.pluralidx;
    globals.gettext = django.gettext;
    globals.ngettext = django.ngettext;
    globals.gettext_noop = django.gettext_noop;
    globals.pgettext = django.pgettext;
    globals.npgettext = django.npgettext;
    globals.interpolate = django.interpolate;
    globals.get_format = django.get_format;

    django.jsi18n_initialized = true;
  }

}(this));

