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.

73 lines
1.8 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. OverpassLayer.twig.extendFunction('isTranslated', function (str) {
  22. return tagTranslationsIsTranslated(str)
  23. })
  24. function tagTranslationsIsTranslated (str) {
  25. return !(str in lang_non_translated) && (str in lang_str)
  26. }
  27. function tagTranslationsTrans () {
  28. var tag = arguments[0]
  29. var value
  30. var count
  31. if (arguments.length > 1) {
  32. value = typeof arguments[1] === 'undefined' ? null : arguments[1]
  33. }
  34. if (arguments.length > 2) {
  35. count = arguments[2]
  36. }
  37. if (typeof value === 'undefined') {
  38. return lang('tag:' + tag, count)
  39. } else {
  40. return lang('tag:' + tag + '=' + value, count)
  41. }
  42. }
  43. function tagTranslationsTransList (key, values) {
  44. if (typeof values === 'undefined') {
  45. return null
  46. }
  47. values = values.split(';')
  48. values = values.map(function (key, value) {
  49. return tagTranslationsTrans(key, value.trim())
  50. }.bind(this, key))
  51. if (values.length > 1) {
  52. return values.slice(0, -1).join(', ') + ' and ' + values.slice(-1)[0]
  53. }
  54. return values[0]
  55. }
  56. module.exports = {
  57. trans: tagTranslationsTrans,
  58. isTranslated: tagTranslationsIsTranslated,
  59. setTagLanguage: function (lang) {
  60. tagLang = lang
  61. }
  62. }