8000 feat(l10n): upgrade `i18next-scanner` and refresh translations by cheton · Pull Request #884 · cncjs/cncjs · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

feat(l10n): upgrade i18next-scanner and refresh translations #884

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 15 commits into from
Oct 16, 2024
Merged

Conversation

cheton
Copy link
Collaborator
@cheton cheton commented Oct 15, 2024

PR Type

enhancement, other


Description

  • Upgraded i18next-scanner dependency to version 4.6.0.
  • Updated removeUnusedKeys from a boolean to a function in both i18next-scanner app and server configurations.
  • Added and improved translations for multiple languages, enhancing localization support and consistency.
  • Completed translations for user interface elements and system messages in several languages.

Changes walkthrough 📝

Relevant files
Configuration changes
2 files
i18next-scanner.app.config.js
Update `removeUnusedKeys` to a function in config.             

i18next-scanner.app.config.js

  • Changed removeUnusedKeys from a boolean to a function.
  • Added comments explaining the parameters and return value of the
    function.
  • Function now removes unused keys only if the namespace is 'resource'.
  • +11/-1   
    i18next-scanner.server.config.js
    Update `removeUnusedKeys` to a function in server config.

    i18next-scanner.server.config.js

  • Changed removeUnusedKeys from a boolean to a function.
  • Added comments ex 8000 plaining the parameters and return value of the
    function.
  • Function now removes unused keys only if the namespace is 'resource'.
  • +11/-1   
    Localization
    5 files
    resource.json
    Add and improve Russian translations.                                       

    src/app/i18n/ru/resource.json

  • Added translations for previously untranslated keys.
  • Improved existing translations for consistency.
  • +278/-275
    resource.json
    Add and improve Czech translations.                                           

    src/app/i18n/cs/resource.json

  • Added translations for previously untranslated keys.
  • Improved existing translations for consistency.
  • +285/-282
    resource.json
    Add and improve Ukrainian translations.                                   

    src/app/i18n/uk/resource.json

  • Added translations for previously untranslated keys.
  • Improved existing translations for consistency.
  • +27/-24 
    resource.json
    Add and improve Portuguese (Portugal) translations.           

    src/app/i18n/pt-pt/resource.json

  • Added translations for previously untranslated keys.
  • Improved existing translations for consistency.
  • +26/-23 
    resource.json
    Add and improve Japanese translations.                                     

    src/app/i18n/ja/resource.json

  • Added translations for previously untranslated keys.
  • Improved existing translations for consistency.
  • +6/-3     
    Enhancement
    10 files
    resource.json
    Complete Italian Translations for UI and System Messages 

    src/app/i18n/it/resource.json

  • Added Italian translations for previously untranslated strings.
  • Completed translations for user interface elements and system
    messages.
  • Enhanced localization support by filling in missing translations.
  • +333/-330
    resource.json
    Complete French Translations for UI and System Messages   

    src/app/i18n/fr/resource.json

  • Added French translations for previously untranslated strings.
  • Completed translations for user interface elements and system
    messages.
  • Enhanced localization support by filling in missing translations.
  • +277/-274
    resource.json
    Complete Turkish Translations for UI and System Messages 

    src/app/i18n/tr/resource.json

  • Added Turkish translations for previously untranslated strings.
  • Completed translations for user interface elements and system
    messages.
  • Enhanced localization support by filling in missing translations.
  • +71/-68 
    resource.json
    Complete Dutch Translations for UI and System Messages     

    src/app/i18n/nl/resource.json

  • Added Dutch translations for previously untranslated strings.
  • Completed translations for user interface elements and system
    messages.
  • Enhanced localization support by filling in missing translations.
  • +9/-6     
    resource.json
    Complete Norwegian Translations for UI and System Messages

    src/app/i18n/nb/resource.json

  • Added Norwegian translations for previously untranslated strings.
  • Completed translations for user interface elements and system
    messages.
  • Enhanced localization support by filling in missing translations.
  • +6/-3     
    resource.json
    Add English Strings for Data Collection and Language Settings

    src/app/i18n/en/resource.json

  • Added new English strings for data collection and display language
    settings.
  • Enhanced localization support by adding new configuration options.
  • +4/-1     
    resource.json
    Add missing Traditional Chinese translations for UI elements.

    src/app/i18n/zh-tw/resource.json

  • Added translations for previously untranslated strings in Traditional
    Chinese.
  • Completed missing translations for various UI elements and system
    messages.
  • Enhanced localization coverage for CNC machine operations and
    settings.
  • +167/-164
    resource.json
    Add missing Hungarian translations for UI elements.           

    src/app/i18n/hu/resource.json

  • Added translations for previously untranslated strings in Hungarian.
  • Completed missing translations for various UI elements and system
    messages.
  • Improved localization coverage for CNC machine operations and
    settings.
  • +160/-157
    resource.json
    Add missing Spanish translations for UI elements.               

    src/app/i18n/es/resource.json

  • Added translations for previously untranslated strings in Spanish.
  • Completed missing translations for various UI elements and system
    messages.
  • Enhanced localization coverage for CNC machine operations and
    settings.
  • +177/-174
    resource.json
    Add missing Brazilian Portuguese translations for UI elements.

    src/app/i18n/pt-br/resource.json

  • Added translations for previously untranslated strings in Brazilian
    Portuguese.
  • Completed missing translations for various UI elements and system
    messages.
  • Improved localization coverage for CNC machine operations and
    settings.
  • +31/-28 
    Dependencies
    1 files
    package.json
    Upgrade `i18next-scanner` dependency to version 4.6.0.     

    package.json

    • Updated i18next-scanner dependency from version 4.5.0 to 4.6.0.
    +1/-1     
    Additional files (token-limit)
    2 files
    resource.json
    ...                                                                                                           

    src/app/i18n/de/resource.json

    ...

    +91/-88 
    resource.json
    ...                                                                                                           

    src/app/i18n/zh-cn/resource.json

    ...

    +46/-43 

    💡 PR-Agent usage: Comment /help "your question" on any pull request to receive relevant information

    Copy link
    codesandbox bot commented Oct 15, 2024

    Review or Edit in CodeSandbox

    Open the branch in Web EditorVS CodeInsiders

    Open Preview

    Copy link
    Contributor
    codiumai-pr-agent-free bot commented Oct 15, 2024

    PR Reviewer Guide 🔍

    (Review updated until commit b803289)

    Here are some key observations to aid the review process:

    ⏱️ Estimated effort to review: 2 🔵🔵⚪⚪⚪
    🧪 No relevant tests
    🔒 No security concerns identified
    ⚡ Recommended focus areas for review

    Configuration Change
    The removeUnusedKeys option has been changed from a boolean to a function. Verify that this change is intentional and does not break existing functionality.

    New File
    A new file has been added to define supported languages. Ensure that all required languages are included and correctly configured.

    Configuration Change
    Similar to the app config, the removeUnusedKeys option has been changed to a function. Verify consistency between app and server configurations.

    Co-authored-by: codiumai-pr-agent-free[bot] <138128286+codiumai-pr-agent-free[bot]@users.noreply.github.com>
    Co-authored-by: codiumai-pr-agent-free[bot] <138128286+codiumai-pr-agent-free[bot]@users.noreply.github.com>
    Co-authored-by: codiumai-pr-agent-free[bot] <138128286+codiumai-pr-agent-free[bot]@users.noreply.github.com>
    Co-authored-by: codiumai-pr-agent-free[bot] <138128286+codiumai-pr-agent-free[bot]@users.noreply.github.com>
    Co-authored-by: codiumai-pr-agent-free[bot] <138128286+codiumai-pr-agent-free[bot]@users.noreply.github.com>
    @cncjs cncjs deleted a comment from codiumai-pr-agent-free bot Oct 15, 2024
    Co-authored-by: codiumai-pr-agent-free[bot] <138128286+codiumai-pr-agent-free[bot]@users.noreply.github.com>
    @cncjs cncjs deleted a comment from codiumai-pr-agent-free bot Oct 16, 2024
    @cheton
    Copy link
    Collaborator Author
    cheton commented Oct 16, 2024

    /improve

    @cheton
    Copy link
    Collaborator Author
    cheton commented Oct 16, 2024

    /review

    @cheton
    Copy link
    Collaborator Author
    cheton commented Oct 16, 2024

    /improve

    Copy link
    Contributor
    codiumai-pr-agent-free bot commented Oct 16, 2024

    PR Code Suggestions ✨

    Latest suggestions up to b803289

    CategorySuggestion                                                                                                                                    Score
    Enhancement
    Refine the condition for removing unused translation keys to prevent accidental removal of necessary keys

    Consider using a more specific condition in the removeUnusedKeys function. The
    current implementation removes all keys in the 'resource' namespace, which might be
    too broad. You could add more specific conditions to ensure only truly unused keys
    are removed.

    i18next-scanner.app.config.js [23-28]

     removeUnusedKeys: function(lng, ns, key) {
    -  if (ns === 'resource') {
    +  if (ns === 'resource' && !isKeyUsed(key)) {
         return true;
       }
       return false;
     },
    • Apply this suggestion
    Suggestion importance[1-10]: 7

    Why: The suggestion to refine the condition for removing unused keys by adding a check for key usage is valid and could prevent accidental removal of necessary keys. This enhances the functionality by ensuring only truly unused keys are removed, which is a meaningful improvement.

    7
    Maintainability
    ✅ Sort the supported languages array alphabetically for improved maintainability and readability
    Suggestion Impact:The suggestion to sort the supported languages array alphabetically by the label property was implemented, but with an additional condition to prioritize certain languages.

    code diff:

    +].sort((a, b) => {
    +  const bottomHalfLanguages = new Set(['ja', 'zh-cn', 'zh-tw']);
    +
    +  const priorityA = bottomHalfLanguages.has(a.value) ? 1 : 0;
    +  const priorityB = bottomHalfLanguages.has(b.value) ? 1 : 0;
    +
    +  // If both items are in the priority list, keep their original order
    +  if (priorityA === priorityB) {
    +    return a.label.localeCompare(b.label);
    +  }
    +
    +  // If only one item is in the priority list, prioritize the other
    +  return priorityA - priorityB;

    Consider sorting the SUPPORTED_LANGUAGES array alphabetically by the label property
    for easier maintenance and readability.

    src/app/constants/i18n.js [1-18]

     export const SUPPORTED_LANGUAGES = [
       { value: 'de', label: 'Deutsch' },
       { value: 'en', label: 'English (US)' },
       { value: 'es', label: 'Español' },
       { value: 'fr', label: 'Français' },
    +  { value: 'hu', label: 'Magyar' },
       { value: 'it', label: 'Italiano' },
    -  { value: 'hu', label: 'Magyar' },
    +  { value: 'ja', label: '日本語' },
       { value: 'nb', label: 'Norwegian' },
       { value: 'nl', label: 'Nederlands' },
       { value: 'pt-br', label: 'Português (Brasil)' },
       { value: 'pt-pt', label: 'Português (Portugal)' },
       { value: 'ru', label: 'Русский' },
       { value: 'tr', label: 'Türkçe' },
       { value: 'uk', label: 'українська' },
    -  { value: 'ja', label: '日本語' },
       { value: 'zh-cn', label: '中文 (简体)' },
       { value: 'zh-tw', label: '中文 (繁體)' }
    -];
    +].sort((a, b) => a.label.localeCompare(b.label));
    • Apply this suggestion
    Suggestion importance[1-10]: 5

    Why: Sorting the supported languages array alphabetically by the label property can improve readability and maintainability. However, it is a minor enhancement that does not affect functionality, hence a moderate score is appropriate.

    5

    Previous suggestions

    ✅ Suggestions up to commit 7570c86
    CategorySuggestion                                                                                                                                    Score
    Best practice
    Extract duplicate function to a shared utility file to reduce code duplication

    Consider extracting the removeUnusedKeys function to a shared utility file, as it's
    identical in both 'app' and 'server' config files. This would improve
    maintainability and reduce code duplication.

    i18next-scanner.server.config.js [15-20]

    -removeUnusedKeys: function(lng, ns, key) {
    -  if (ns === 'resource') {
    -    return true;
    -  }
    -  return false;
    -},
    +removeUnusedKeys: require('./utils/removeUnusedKeys'),
    Suggestio 6855 n importance[1-10]: 7

    Why: This suggestion is valid as it addresses code duplication by proposing to extract a common function into a utility file, which can improve maintainability and reduce redundancy.

    7
    Enhancement
    ✅ Use a configuration file for language options to improve maintainability
    Suggestion Impact:The commit implemented the suggestion by replacing hardcoded language options with a map function that iterates over a constant array, SUPPORTED_LANGUAGES, to generate the options dynamically.

    code diff:

    +import { SUPPORTED_LANGUAGES } from 'app/constants/i18n';
     import i18n from 'app/lib/i18n';
     import styles from './index.styl';
     
    @@ -101,23 +102,9 @@
                       value={lang}
                       
                     >
    -                  <option value="cs">Čeština</option>
    -                  <option value="de">Deutsch</option>
    -                  <option value="en">English (US)</option>
    -                  <option value="es">Español</option>
    -                  <option value="fr">Français</option>
    -                  <option value="it">Italiano</option>
    -                  <option value="ja">日本語</option>
    -                  <option value="hu">Magyar</option>
    -                  <option value="nb">Norwegian</option>
    -                  <option value="nl">Nederlands</option>
    -                  <option value="pt-br">Português (Brasil)</option>
    -                  <option value="pt-pt">Português (Portugal)</option>
    -                  <option value="ru">Русский</option>
    -                  <option value="tr">Türkçe</option>
    -                  <option value="uk">українська</option>
    -                  <option value="zh-cn">中文 (简体)</option>
    -                  <option value="zh-tw">中文 (繁體)</option>
    +                  {SUPPORTED_LANGUAGES.map(({ value, label }) => (
    +                    <option key={value} value={value}>{label}</option>
    +                  ))}

    Consider using a separate configuration file or a constant array to store language
    options, making it easier to maintain and update the list of supported languages.

    src/app/containers/Settings/General/General.jsx [105-121]

    +import { SUPPORTED_LANGUAGES } from '../../../constants/languages';
    +
    +...
    +
     <select
       className={styles.formControl}
       value={lang}
       
     >
    -  <option value="de">Deutsch</option>
    -  <option value="en">English (US)</option>
    -  <option value="es">Español</option>
    -  <option value="fr">Français</option>
    -  <option value="it">Italiano</option>
    -  <option value="ja">日本語</option>
    -  <option value="hu">Magyar</option>
    -  <option value="nb">Norwegian</option>
    -  <option value="nl">Nederlands</option>
    -  <option value="pt-br">Português (Brasil)</option>
    -  <option value="pt-pt">Português (Portugal)</option>
    -  <option value="ru">Русский</option>
    -  <option value="tr">Türkçe</option>
    -  <option value="uk">українська</option>
    -  <option value="zh-cn">中文 (简体)</option>
    -  <option value="zh-tw">中文 (繁體)</option>
    +  {SUPPORTED_LANGUAGES.map(({ value, label }) => (
    +    <option key={value} value={value}>{label}</option>
    +  ))}
     </select>
    Suggestion importance[1-10]: 6

    Why: The suggestion to use a configuration file for language options is reasonable, as it can enhance maintainability by centralizing the language data. However, it is not critical and offers a moderate improvement.

    6
    ✅ Suggestions up to commit b796f39
    CategorySuggestion                                                                                                                                    Score
    Best practice
    ✅ Improve consistency in language naming conventions

    Consider using a consistent naming convention for country/language codes.
    'Netherlands' should be 'Dutch' to match the language name pattern used for other
    entries.

    build.config.js [12]

    -'nl', // Netherlands
    +'nl', // Dutch

    [Suggestion has been applied]

    Suggestion importance[1-10]: 7

    Why:

    7
    Maintainability
    Extract repeated function to improve code reusability

    Consider extracting the removeUnusedKeys function to a separate utility file to
    promote code reusability, as it's used in multiple configuration files.

    i18next-scanner.app.config.js [23-28]

    -removeUnusedKeys: function(lng, ns, key) {
    -  if (ns === 'resource') {
    -    return true;
    -  }
    -  return false;
    -},
    +removeUnusedKeys: removeUnusedKeysUtil,
    Suggestion importance[1-10]: 7

    Why:

    7
    Enhancement
    ✅ Improve user experience by sorting language options alphabetically

    Consider sorting the language options alphabetically by their display names to
    improve user experience when selecting a language.

    src/app/containers/Settings/General/General.jsx [105-120]

     <option value="de">Deutsch</option>
     <option value="en">English (US)</option>
     <option value="es">Español</option>
     <option value="fr">Français</option>
    +<option value="hu">Magyar</option>
     <option value="it">Italiano</option>
     <option value="ja">日本語</option>
    -<option value="hu">Magyar</option>
     <option value="nb">Norwegian</option>
     <option value="nl">Nederlands</option>
     <option value="pt-br">Português (Brasil)</option>
     <option value="pt-pt">Português (Portugal)</option>
     <option value="ru">Русский</option>
     <option value="tr">Türkçe</option>
     <option value="uk">Український</option>
     <option value="zh-cn">中文 (简体)</option>
     <option value="zh-tw">中文 (繁體)</option>

    [Suggestion has been applied]

    Suggestion importance[1-10]: 7

    Why:

    7
    ✅ Suggestions up to commit 6c1ad91
    CategorySuggestion                                                                                                                                    Score
    Enhancement
    Improve variable naming for better code readability

    Consider using a more descriptive variable name instead of 'ns' for clarity. For
    example, 'namespace' would be more explicit.

    i18next-scanner.app.config.js [23-28]

    -removeUnusedKeys: function(lng, ns, key) {
    -  if (ns === 'resource') {
    +removeUnusedKeys: function(lng, namespace, key) {
    +  if (namespace === 'resource') {
         return true;
       }
       return false;
     },
    Suggestion importance[1-10]: 7

    Why:

    7
    Simplify function syntax for improved code conciseness

    Consider using a more concise arrow function syntax for the removeUnusedKeys
    function.

    i18next-scanner.server.config.js [15-20]

    -removeUnusedKeys: function(lng, ns, key) {
    -  if (ns === 'resource') {
    -    return true;
    -  }
    -  return false;
    -},
    +removeUnusedKeys: (lng, ns, key) => ns === 'resource',
    Suggestion importance[1-10]: 7

    Why:

    7
    ✅ Improve grammar in Spanish translations by using the correct form of "to be"

    Consider using "Está" instead of "Esta" for better grammar in questions.

    src/app/i18n/es/resource.json [63]

    -"Are you sure you want to delete this item?": "Esta seguro de eliminar este ítem?",
    +"Are you sure you want to delete this item?": "¿Está seguro de eliminar este ítem?",

    [Suggestion has been applied]

    Suggestion importance[1-10]: 7

    Why:

    7
    ✅ Correct spelling errors in translations to improve accuracy

    Use "más" instead of "mas" for correct spelling and meaning.

    src/app/i18n/es/resource.json [61]

    -"and more...": "y mas...",
    +"and more...": "y más...",

    [Suggestion has been applied]

    Suggestion importance[1-10]: 7

    Why:

    7
    ✅ Add missing diacritical marks in Spanish translations for proper spelling

    Add missing accent mark to "ítem" for correct Spanish spelling.

    src/app/i18n/es/resource.json [63]

    -"Are you sure you want to delete this item?": "Esta seguro de eliminar este ítem?",
    +"Are you sure you want to delete this item?": "¿Está seguro de eliminar este ítem?",

    [Suggestion has been applied]

    Suggestion importance[1-10]: 7

    Why:

    7
    ✅ Correct grammatical errors in Spanish translations to improve clarity

    Use "ha" instead of "a" in the phrase "El servido a dejado de funcionar" for correct
    grammar.

    src/app/i18n/es/resource.json [106]

    -"Server has stopped working": "El servido a dejado de funcionar",
    +"Server has stopped working": "El servidor ha dejado de funcionar",

    [Suggestion has been applied]

    Suggestion importance[1-10]: 7

    Why:

    7
    Best practice
    Standardize JSON key formatting for consistency

    Ensure consistent use of quotation marks for JSON keys. Some keys use single quotes
    while others use double quotes.

    src/app/i18n/cs/resource.json [1-17]

    +"Records: {{from}} - {{to}} / {{total}}": "Rekordy: {{from}} - {{to}} / {{total}}",
    +"Records: {{total}}": "Rekordy: {{total}}",
    +"{{pageLength}} per page": "{{pageLength}} na stránku",
    +"New update available": "K dispozici nová aktualizace",
    +"Command succeeded": "Příkaz byl úspěšně proveden",
    +"Command failed ({{err}})": "Příkaz se nezdařil ({{err}})",
    +"My Account": "Můj účet",
    +"Signed in as {{name}}": "Přihlášen jako {{name}}",
    +"Account": "Účet",
    +"Sign Out": "Odhlásit se",
    +"Options": "Možnosti",
    +"Command": "Příkaz",
    +"Show notifications": "Zobrazit oznámení",
    +"Help": "Nápověda",
    +"Report an issue": "Nahlásit problém",
    +"Cycle Start": "Start cyklu",
     
    -
    Suggestion importance[1-10]: 7

    Why:

    7
    ✅ Suggestions up to commit ec1589a
    CategorySuggestion                                                                                                                                    Score
    Enhancement
    ✅ Provide translations for all UI elements to ensure a fully localized experience

    The translation for "Fork Widget" is missing. Consider adding a Czech translation
    that conveys the meaning of forking a widget in the context of the application.

    src/app/i18n/cs/resource.json [109]

    -"Fork Widget": "Fork Widget",
    +"Fork Widget": "Vytvořit kopii widgetu",

    [Suggestion has been applied]

    Suggestion importance[1-10]: 8

    Why: Adding a translation for "Fork Widget" enhances the localization of the application, ensuring that all UI elements are accessible to Czech-speaking users. This is important for maintaining a consistent user experience.

    8
    Simplify conditional logic by directly returning the result of the comparison

    Simplify the removeUnusedKeys function by directly returning the result of the
    comparison, eliminating the need for an if-else structure.

    i18next-scanner.app.config.js [23-28]

     removeUnusedKeys: function(lng, ns, key) {
    -  if (ns === 'resource') {
    -    return true;
    -  }
    -  return false;
    +  return ns === 'resource';
     },
    Suggestion importance[1-10]: 7

    Why: Simplifying the function by directly returning the result of the comparison reduces code complexity and enhances readability, making the code more concise and easier to understand.

    7
    ✅ Use more specific terminology for technical terms to improve clarity

    Consider using a more specific term for "Command" in Czech. "Příkaz" can be
    ambiguous. For CNC context, "Instrukce" or "Povel" might be more appropriate.

    src/app/i18n/cs/resource.json [13]

    -"Command": "Příkaz",
    +"Command": "Instrukce",

    [Suggestion has been applied]

    Suggestion importance[1-10]: 7

    Why: The suggestion to use "Instrukce" instead of "Příkaz" could improve clarity in the CNC context, as "Příkaz" can be ambiguous. This change enhances the precision of the translation, making it more contextually appropriate.

    7
    ✅ Improve accuracy of technical translations to better convey functionality

    The translation for "Keypad jogging" could be more precise. Consider using a term
    that specifically refers to machine control via keypad in Czech.

    src/app/i18n/cs/resource.json [265]

    -"Keypad jogging": "Ovládání přes klávesnici",
    +"Keypad jogging": "Pohyb stroje klávesnicí",

    [Suggestion has been applied]

    Suggestion importance[1-10]: 7

    Why: The suggestion to change "Ovládání přes klávesnici" to "Pohyb stroje klávesnicí" provides a more precise translation that better describes the functionality of controlling machine movement via a keypad, improving user understanding.

    7
    Best practice
    Use more descriptive variable names to improve code readability

    Consider using a more descriptive variable name instead of ns for clarity. For
    example, namespace would be more explicit.

    i18next-scanner.app.config.js [23-28]

    -removeUnusedKeys: function(lng, ns, key) {
    -  if (ns === 'resource') {
    +removeUnusedKeys: function(lng, namespace, key) {
    +  if (namespace === 'resource') {
         return true;
       }
       return false;
     },
    Suggestion importance[1-10]: 6

    Why: The suggestion to use a more descriptive variable name like 'namespace' instead of 'ns' improves code readability and clarity, which is beneficial for maintainability and understanding of the code.

    6

    Copy link
    Contributor

    Persistent review updated to latest commit b803289

    @cheton cheton merged commit d51bf99 into master Oct 16, 2024
    4 checks passed
    @cheton cheton deleted the feat/i18n branch October 16, 2024 05:09
    Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
    Projects
    None yet
    Development

    Successfully merging this pull request may close these issues.

    1 participant
    0