* i18n: simpler translation strings
* i18n: simpler translation strings
* i18n: readble printf(), and moving the %s placeholder to `%s product`
* i18n: make string translatable and remove the HTML tags
* i18n: avoide using HTML tags in translatino strings
* i18n: move the colon into the translation string and use %s placeholder for the IP
* i18n: use sprintf() on field-validation translation strings, and unify those strings
* i18n: move colons into the translation strings
* i18n: use `%s` placeholder as the site name in "Powered by WooCommerce" string
* i18n: use `%s` placeholder for min and max price
* i18n: rewrite the translation strings printf()
* Replace some context function with translation comments
* Remove two more context function
* Replace another context function with translation comments
* Fixed case for all _e, esc_attr_e and esc_html_e strings
* Fixed case for all _n_noop strings
* Fixed case for all _x strings
* Fixed case for all __, esc_html__ and esc_attr__ strings
* Fixed a few more strings
* Fixed strings in unit tests
* Fix PayPal Standard case.
* Save Order text
CAST min/max as decimal. Otherwise, a max of 59.99 will return 59 instead of 60 - so the product will be missed when using the filter.
Added filter on post_type so I can add product_variation for compatibility with one of my plugins.
If the option 'Enable archives' is selected for a product attribute, then the layered nav widget can also be used to filter that archive.
However the widget then doesn't work correctly in 'List' and 'OR' mode for that archive (although it works fine on the main shop page).
Example:
The attribute "product-type" is created and archives are enabled. It has values like "Courses", "One-to-one-tuition", "Equipment rental" and so on. Another product attribute "teaching-level" is created which uses values of "Beginner", "Intermediate" and "Advanced".
When the archive http://www.domain.com/pa_product-type/courses/ is visited the correct products are displayed. A layered nav widget is added in 'List' and 'OR' mode for the attribute 'teaching-level'. Clicking on any of "Beginner", "Intermediate" and "Advanced" will work fine the first time as the links are correctly generated in the form http://www.domain.com/pa_product-type/courses/?filter_teaching-level=advanced&query_type_teaching-level=or. (Advanced used for the example). However once one has been clicked, the links generated are now incorrect - they are in the form http://www.domain.com/?taxonomy=pa_teaching-level&term=advanced&filter_teaching-level=advanced%2Cbeginner&query_type_teaching-level=or.
Using get_queried_object instead of get_query_var fixes the problem.