Skip to content

Instantly share code, notes, and snippets.

@johntron
Last active August 29, 2015 14:02
Show Gist options
  • Save johntron/dd01d7b6b25bb8586141 to your computer and use it in GitHub Desktop.
Save johntron/dd01d7b6b25bb8586141 to your computer and use it in GitHub Desktop.
Find all untranslated strings
johntron> grasp ':matches(assign[left.prop=#strings],var-dec[id=#strings]) obj.props[val=literal].val' -r components-spirent/
components-spirent/endpoint-view-model/index.js:79: "Field is required": "Field is required",
components-spirent/endpoint-view-model/index.js:80: "Must be less than 4,096": "Must be less than 4,096",
components-spirent/endpoint-view-model/index.js:81: "Must be an IP address": "Must be an IP address",
components-spirent/endpoint-view-model/index.js:82: "Must be greater than 0": "Must be greater than 0",
components-spirent/endpoint-view-model/index.js:83: "Must be less than 128": "Must be less than 128",
components-spirent/endpoint-view-model/index.js:84: "Must be less than or equal to 512": "Must be less than or equal to 512",
components-spirent/endpoint-view-model/index.js:85: "Must be an integer": "Must be an integer",
components-spirent/endpoint-view-model/index.js:86: "An endpoint already exists with this name": "An endpoint already exists with this name",
components-spirent/endpoint-view-model/index.js:87: "Save": "Save",
components-spirent/endpoint-view-model/index.js:88: "Update": "Update"
components-spirent/interface-selector/index.js:22: "No interfaces": "No interfaces"
components-spirent/line-rate-message-view-model/index.js:12: "Running a test at speeds near line-rate can result in unexpected or errant latency in the test results": 'Running a test at speeds near line-rate can result in unexpected or errant latency in the test results. To learn more about what causes this, read <a href="https://support.spirentforbusiness.com/support/solutions/articles/1000060929-line-rate" target="_blank">line rate latency</a>.'
components-spirent/logger/index.js:35: critical: 'CRITICAL',
components-spirent/logger/index.js:36: error: 'ERROR',
components-spirent/logger/index.js:37: warning: 'WARNING',
components-spirent/logger/index.js:38: info: 'INFO',
components-spirent/logger/index.js:39: debug: 'DEBUG'
components-spirent/netflow-settings/views/collector-list.js:15: 'No collectors': 'No collectors'
components-spirent/netflow-settings/views/collector.js:16: "Please enter a valid host address (IPv4, IPv6, or name)": "Please enter a valid host address (IPv4, IPv6, or name)",
components-spirent/netflow-settings/views/collector.js:17: "Please enter a valid port number": "Please enter a valid port number",
components-spirent/netflow-settings/views/collector.js:18: "Port must be less than 65535": "Port must be less than 65535"
components-spirent/netflow-settings/views/global-settings.js:13: "netflow-v5": "Netflow v5",
components-spirent/netflow-settings/views/global-settings.js:14: "netflow-v9": "Netflow v9",
components-spirent/netflow-settings/views/global-settings.js:15: "ipfix": "IPFIX",
components-spirent/netflow-settings/views/global-settings.js:16: "Please enter a timeout in seconds": "Please enter a timeout in seconds"
components-spirent/netflow-settings/views/interface-settings.js:22: "Export this interface's traffic": "Export this interface's traffic"
components-spirent/netflow-settings/views/interfaces.js:36: "Select a port": "Choose the ports from which you want to generate NetFlow records. Connect each selected port to a SPAN or TAP port to enable capture of network data to generate NetFlow records."
components-spirent/netflow-settings/views/netflow-settings.js:38: "License invalid": "Your license is invalid. If you just updated, you may need a new license. Please upload a valid license or contact Spirent support at <a href='http://support.spirentforbusiness.com' target='_blank'>support.spirentforbusiness.com</a>.",
components-spirent/netflow-settings/views/netflow-settings.js:39: "Updating": "Updating",
components-spirent/netflow-settings/views/netflow-settings.js:40: "Exporting has not yet started": "Exporting has not yet started",
components-spirent/netflow-settings/views/netflow-settings.js:41: "Please allow approximately three minutes for exporting to begin.": "Please allow approximately three minutes for exporting to begin.",
components-spirent/netflow-settings/views/netflow-settings.js:42: "Please wait for test to finish": "Please wait for test to finish"
components-spirent/scheduler/delegates/test-view-model.js:24: 'Field is required': 'Field is required',
components-spirent/scheduler/delegates/test-view-model.js:25: "Must be a date in format YYYY-MM-DD": "Must be a date in format YYYY-MM-DD",
components-spirent/scheduler/delegates/test-view-model.js:26: "Select at least one day of the week": "Select at least one day of the week",
components-spirent/scheduler/delegates/test-view-model.js:27: "Choose one": "Choose one",
components-spirent/scheduler/delegates/test-view-model.js:28: "Please enter a number of 1 or more": "Please enter a number of 1 or more",
components-spirent/scheduler/delegates/test-view-model.js:30: "Invalid schedule for test": "Invalid schedule for test"
components-spirent/test-view-model/index.js:35: "Duration is based on configuration": "Duration is based on configuration"
components-spirent/traffic-player-view-model/index.js:37: "Source endpoint is invalid": "Source endpoint is invalid",
components-spirent/traffic-player-view-model/index.js:38: "Destination endpoint is invalid": "Destination endpoint is invalid"
components-spirent/traffic-recorder/models/recorder.js:9: 'New recorder': 'New recorder'
components-spirent/traffic-recorder/views/capture.js:6: "seconds": "seconds",
components-spirent/traffic-recorder/views/capture.js:7: "bytes": "bytes",
components-spirent/traffic-recorder/views/capture.js:8: "packets": "packets"
components-spirent/traffic-recorder/views/delegates/recorder-edit.js:8: 'Field is required': 'Field is required',
components-spirent/traffic-recorder/views/delegates/recorder-edit.js:9: 'Must be a positive integer': 'Must be a positive integer',
components-spirent/traffic-recorder/views/delegates/recorder-edit.js:10: 'Must select an interface': 'Must select an interface',
components-spirent/traffic-recorder/views/delegates/recorder-edit.js:11: 'Cannot capture more than 10GB (10,737,418,240 bytes)': 'Cannot capture more than 10GB (10,737,418,240 bytes)'
components-spirent/traffic-recorder/views/delegates/recorder-history.js:13: "seconds": "seconds",
components-spirent/traffic-recorder/views/delegates/recorder-history.js:14: "bytes": "bytes",
components-spirent/traffic-recorder/views/delegates/recorder-history.js:15: "packets": "packets",
components-spirent/traffic-recorder/views/delegates/recorder-history.js:16: "Record": "Record",
components-spirent/traffic-recorder/views/delegates/recorder-history.js:17: "Stop": "Stop"
components-spirent/traffic-recorder/views/delegates/recorder-view.js:10: "seconds": "seconds",
components-spirent/traffic-recorder/views/delegates/recorder-view.js:11: "bytes": "bytes",
components-spirent/traffic-recorder/views/delegates/recorder-view.js:12: "packets": "packets",
components-spirent/traffic-recorder/views/delegates/recorder-view.js:13: "Record": "Record",
components-spirent/traffic-recorder/views/delegates/recorder-view.js:14: "Stop": "Stop"
@johntron
Copy link
Author

This finds all strings that haven't been translated. New strings are added to "strings" variables like so:

var strings = {
"Translate me": "Translate me"
};

Translated strings are wrapped in translate() like so:

var strings = {
"Translate me": translate("Translate me")
};

The problem is, sometimes strings is a local variable, and sometimes it's a member variable of this

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment