You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CHANGELOG.md
+27Lines changed: 27 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,5 +1,32 @@
1
1
# Fluency for ProcessWire Changelog
2
2
3
+
## 2.2.0 2025-12-23
4
+
5
+
### Critical update. New features, Bugfixes/Compatability. Required for users of DeepL.
6
+
7
+
**Critical**: All users employing DeepL as the translation service must upgrade. DeepL API authentication requirements will change in January 2025 with previous methods deprecated. Using Fluency with DeepL after 2025-12-15 will cause all translations to fail with a translation service error displayed in the UI.
8
+
9
+
- Update DeepL authentication method to Auth header from deprecated URL paramter. More information in the DeepL API documentation [here](https://developers.deepl.com/docs/resources/breaking-changes-change-notices/march-2025-deprecating-get-requests-to-translate-and-authenticating-with-auth_key)
10
+
- Add clarification to requirement of AdminThemeUikit to use Fluency in README
11
+
- Add 'name' property to ConfiguredLangaugeData object that makes the ProcessWire name of the
12
+
language available
13
+
- Fix deprecated PHP 8.4 deprecated implicit null parameters in FluencyMarkup class. Credit to @BernhardBaumrock for finding/reporting
14
+
- Add jQuery change event trigger when translated values are inserted in addition to native JavaScript change event. See note on change detection in RockPageBuilder fields below
15
+
- Add additional TinyMCE compatability.
16
+
- Replace Gulp with Parcel for asset bundling.
17
+
- Replace Sass with CSS, replace Sass transpiler with PostCSS
18
+
- Add compatibility with new AdminThemeUikit 3 theme and theme features. Remains backwards compatible with previous versions
19
+
- UI design updates.
20
+
- Updated README.md with documentation for theming Fluency
21
+
- API usage table now shows used/limit/remaining numbers formatted with commas to more easily read when they're large
22
+
- Remove legacy/unused code and files. Code cleanup. A little more docblocking.
23
+
- Change console warnings about unrecognized fields when attempting to initialize translation to only show when debug is enabled so we aren't junking up the browser console
24
+
- Added additional documentation for contributing and the tech stack for asset bundling
25
+
26
+
This release addresses issues with change detection in RockPageBuilder fields. Links to issues reported [here](https://processwire.com/talk/topic/24567-fluency-the-complete-translation-enhancement-suite-for-processwire/?do=findComment&comment=249741), and [here](https://processwire.com/talk/topic/24567-fluency-the-complete-translation-enhancement-suite-for-processwire/?do=findComment&comment=249746).
27
+
28
+
This release also contains the fix for incorrect `href` and `hreflang` when outputting language meta tags using `$fluency->renderAltLinkLanguageMetaTags()`. [Pull Request](https://github.com/SkyLundy/Fluency/pull/19) credit to @WebWorkingMan for reporting and bugfix
'description' => __('Enabling caching can help keep API usage lower and increase the speed of translation when the same content is translated more than once.'),
480
+
'description' => __('Translation caching reduces API usage and increases translation speed when the same content is translated more than once.'),
481
481
'checkedValue' => 1,
482
482
'uncheckedValue' => 0
483
483
],
@@ -508,7 +508,7 @@ function ($markup, $language) {
508
508
'translatable_languages_cache_management' => [
509
509
'type' => 'InputfieldMarkup',
510
510
'label' => __('Translatable Languages Cache Management'),
511
-
'description' => __('Fluency caches the list of languages a third party supports. If a translation service introduces a language that is not available in Fluency, clear this cache.'),
511
+
'description' => __('A cache of languages the translation service in use supports. Clear this cache if a translation service introduces a language that is not available in Fluency.'),
Copy file name to clipboardExpand all lines: README.md
+41-2Lines changed: 41 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -17,13 +17,18 @@ Upgrading from earlier versions to 1.0.8 and earlier may cause errors to occur.
17
17
18
18
For support and community discussion about Fluency, visit [the module thread in the ProcessWire forums](https://processwire.com/talk/topic/24567-fluency-the-complete-translation-enhancement-suite-for-processwire/).
19
19
20
+
**IMPORTANT**
21
+
22
+
Fluency v2.2.0 or greater is required when using DeepL as the translation service. DeepL changed their API authentication method in January of 2025 and deprecated the previous method. Translation via DeepL in versions earlier to 2.2.0 will no longer work and result in a translation service error in the UI.
@@ -106,6 +112,14 @@ All text for the Fluency UI elements can be translated including messages, error
106
112
107
113
All translatable texts are located in `Fluency/app/FluencyLocalization.php`
108
114
115
+
### Theming Fluency
116
+
117
+
Fluency is styled to match and complement AdminThemeUikit which is active by default when you install ProcessWire. It is also configured to work with AdminThemUikit v3 which adds built-in customizability for theming. When you choose a main color, or choose a custom main color, Fluency will match your theme choices.
118
+
119
+
CSS for Fluency UI elements may be customized for some styles. Fluency uses [CSS custom properties](https://developer.mozilla.org/en-US/docs/Web/CSS/Guides/Cascading_variables/Using_custom_properties) for values such as color in some rules.
120
+
121
+
You can refrence the available custom properties that you can set values for in `Fluency/resources/css/global/ft_variables.css`
122
+
109
123
### Upgrading Or Removing
110
124
111
125
Adding, upgrading, or removing Fluency from your ProcessWire application will not affect content. At most, you _may_ (but not always) need to update or reconfigure your Fluency module config. Settings are saved individually for each translation engine, so it is possible to switch between engines without losing your configurations for each.
@@ -172,7 +186,7 @@ When content in a ProcessWire field changes, Fluency italicizes and adds a green
All translations are cached by default for a period of one month. This helps reduce API account usage where the same content is translated more than once and significantly increases translation speed. Caching can be toggled on/off on the Fluency module config page. The translation cache can also be manually cleared either on the module config page, via the [Fluency module API](#managing-cache), or via an AJAX request using the [Fluency admin REST API](#admin-rest-api-endpoints).
189
+
All translations are cached indefinitely. This helps reduce API account usage where the same content is translated more than once and significantly increases translation speed. Caching may be toggled on/off on the Fluency module config page. The translation cache can also be manually cleared either on the module config page, via the [Fluency module API](#managing-cache), or via an AJAX request using the [Fluency admin REST API](#admin-rest-api-endpoints).
176
190
177
191
Translation caching relies on _exact_ value matching including punctuation, spelling, and capitalization. This ensures that an exact translation is always returned accurately. Translations that contain multiple strings are cached together.
178
192
@@ -791,6 +805,8 @@ Note: This will only work if the language is recognized by the translation servi
791
805
```php
792
806
<?php namespace ProcessWire;
793
807
808
+
// /site/ready.php
809
+
794
810
use Fluency\DataTransferObjects\{EngineLanguageData, EngineTranslatableLanguagesData};
795
811
796
812
// Hook after Fluency gets the available languages from the DeepL API
@@ -833,10 +849,33 @@ Feature suggestions are welcome. In fact, Fluency has been made better thanks to
833
849
834
850
Fluency is modular in that it contains a framework for adding additional third party services as "Translation Engines". You can choose which Translation Engine you prefer and provide the credentials to connect via their API. As this project is open source, contributions for new third party services as Translation Engines are welcome. If you would like to request a new third party service, [file an issue in the Fluency GitHub repository](https://github.com/SkyLundy/Fluency/issues)
835
851
836
-
If you'd like to develop one for yourself, feel free to fork Fluency, build a new Translation Engine, and create a pull request.
852
+
If you'd like to develop a new translation engine, feel free to fork Fluency, build a new Translation Engine, and create a pull request. Please reference
853
+
854
+
Every effort has been made to make Fluency robustly documented within the code. Full docblocks with information have been added in all files. Additional docblock markup that is parsed by the ProcessWire API Explorer has been added with descriptions and example usage for all primary module methods. JavaScript files are also well documented with docblocks on each method and each object. [ProDevTools](https://processwire.com/talk/store/product/22-prodevtools/)
837
855
838
856
Developer documentation for integrating third party translation services as Translation Engines is located in `Fluency/app/Engines/DEVDOC.md`. _Documentation is a work in progress_. If you need help or more information, feel free to send me a PM on the [ProcessWire forum](https://processwire.com/talk/).
839
857
858
+
### Tech Stack
859
+
860
+
Aside from build tools, Fluency is intentionally built without libraries and external dependencies to ensure that the module is stable long-term. Vanilla JavaScript and CSS are used exclusively. To make use of more advanced features, bundle assets, and optimize output, [Parcel](https://parceljs.org/) is used for JavaScript and CSS.
861
+
862
+
CSS is processed by PostCSS to add import bundling and nested rules.
863
+
864
+
**Using Parcel**
865
+
866
+
In the Fluency module directory, execute the following commands in a terminal instance for development:
867
+
868
+
`npm install`
869
+
`npm run dev`
870
+
871
+
To build for production execute:
872
+
873
+
`npm run build`
874
+
875
+
### Coding Standards
876
+
877
+
Code contributins and bugfixes are welcome via pull requests. Please ensure that your PHP code adheres to [PSR-12 standards](https://www.php-fig.org/psr/psr-12/), JavaScript matches the common conventions followed in existing files, and CSS is formatted and clear.
878
+
840
879
## Cost
841
880
842
881
Fluency is free to use. There is no cost for this module and it can be used on any site that you build with ProcessWire. This module is provided as a thank you to the outstanding ProcessWire community and as a contribution alongside other module developers who help everyone build great websites and applications.
0 commit comments