You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

65 lines
1.6 KiB

  1. var OverpassLayer = require('overpass-layer')
  2. var tagLang = null
  3. OverpassLayer.twig.extendFunction('keyTrans', function () {
  4. return tagTranslationsTrans.apply(this, arguments)
  5. })
  6. OverpassLayer.twig.extendFunction('tagTrans', function () {
  7. return tagTranslationsTrans.apply(this, arguments)
  8. })
  9. OverpassLayer.twig.extendFunction('tagTransList', function () {
  10. return tagTranslationsTransList.apply(this, arguments)
  11. })
  12. OverpassLayer.twig.extendFunction('localizedTag', function (tags, id) {
  13. if (tagLang && id + ':' + tagLang in tags) {
  14. return tags[id + ':' + tagLang]
  15. }
  16. return tags[id]
  17. })
  18. OverpassLayer.twig.extendFunction('trans', function () {
  19. return lang.apply(this, arguments)
  20. })
  21. function tagTranslationsTrans () {
  22. var tag = arguments[0]
  23. var value
  24. var count
  25. if (arguments.length > 1) {
  26. value = typeof arguments[1] === 'undefined' ? null : arguments[1]
  27. }
  28. if (arguments.length > 2) {
  29. count = arguments[2]
  30. }
  31. if (typeof value === 'undefined') {
  32. return lang('tag:' + tag, count)
  33. } else {
  34. return lang('tag:' + tag + '=' + value, count)
  35. }
  36. }
  37. function tagTranslationsTransList (key, values) {
  38. if (typeof values === 'undefined') {
  39. return null
  40. }
  41. values = values.split(';')
  42. values = values.map(function (key, value) {
  43. return tagTranslationsTrans(key, value.trim())
  44. }.bind(this, key))
  45. if (values.length > 1) {
  46. return values.slice(0, -1).join(', ') + ' and ' + values.slice(-1)[0]
  47. }
  48. return values[0]
  49. }
  50. module.exports = {
  51. trans: tagTranslationsTrans,
  52. setTagLanguage: function (lang) {
  53. tagLang = lang
  54. }
  55. }