Une chaîne de traduction MF mauvaise dans la localisation hébreu du client provoque une erreur fatale du site

J’entrerais dans le conteneur, j’installerais vim et je réparerais la locale.
Vous pourriez sauvegarder la locale hébraïque cassée et copier celle anglaise par-dessus…

root@carrie-app:/var/www# for i in `find . -name *.he.yml` ; do cp ${i/he.yml/en.yml} $i ; done

Jolie idée, mais elle n’a pas fonctionné en pratique. lorsque j’ai rebasculé ma locale sur HE, j’obtiens l’erreur. Je suppose que je vais revenir à l’itération sur les utilisateurs pour tous les définir en anglais pour le moment.

Avez-vous redémarré discourse après avoir modifié les locales ?

Ouais. Je n’ai pas fait grand-chose.

image

Après avoir montré mes anciennes compétences en Ruby, j’ai juste tout basculé en anglais pour l’instant. J’ouvrirai un ticket concernant la locale hébraïque ensuite.

Merci @JammyDodger pour le déplacement vers Bug, est-ce tout ce qu’il faut pour ouvrir un rapport de bug, ou dois-je en ouvrir un officiel dans un traqueur de bugs ?

Si une locale en est copiée, une erreur se produit lors de la fusion (il semble que les entrées non traduites soient supprimées et s’il ne reste rien, alors il y a une erreur).

Cependant, la suppression de config/locales/client.he.yml permet la connexion sur mon site de test.

Parce qu’il revient entièrement à l’EN. Je pense que c’est le comportement attendu.

Dans la locale hébraïque config/locales/client.he.yml

    posts_likes_MF: |
      { count, plural,
          one {תגובה, }
          two {שתי תגובות, }
          many {# תגובות, }
        other {# תגובות, }
      }{ ratio, select,
          low { יחס גבוה בין פוסטים ללייקים, }
          med { יחס גבוה מאוד בין פוסטים ללייקים, }
         high { יחס גבוה במיוחד בין פוסטים ללייקים, }
        other {}
      } קפיצה לפוסט הראשון או האחרון…

la ligne

          many {# תגובות, }

doit être supprimée.

many n’est pas autorisé en hébreu (voir Language Plural Rules)

Le problème peut être résolu via l’interface utilisateur. Pour ce faire, la valeur corrigée doit être saisie dans /admin/customize/site_texts/js.posts_likes_MF pour la langue hébraïque :

{ count, plural,
    one {תגובה, }
    two {שתי תגובות, }
   other {# תגובות, }
}{ ratio, select,
    low { יחס גבוה בין פוסטים ללייקים, }
    med { יחס גבוה מאוד בין פוסטים ללייקים, }
   high { יחס גבוה במיוחד בין פוסטים ללייקים, }
  other {}
} קפיצה לפוסט הראשון או האחרון…

Il semble un peu étrange que tout le site puisse devenir inutilisable en saisissant des données incorrectes dans une personnalisation de texte.

2 « J'aime »

Le signaler ici est l’endroit approprié pour les rapports de bugs. :+1:

2 « J'aime »

J’irai voir avec git qui est responsable de cette ligne, je pensais que le seul groupe autorisé à y apporter des modifications était Crowdin ?
De plus, si tel est le cas, pourquoi redémarrer l’unicorn après avoir copié l’anglais sur l’hébreu ne résoudrait-il pas ce problème ?

Il devrait vraiment y avoir une distinction entre « non autorisé » et « non pris en charge ».

Étrangement, dans le code de Discourse, même le « pluriel deux » n’est pas pris en charge pour l’un ou l’autre code de langue, qui EST partagé avec l’arabe. Je pense que c’est là que le problème doit être résolu. Je vais créer une PR pour cela, mais il y a certainement un besoin de corriger l’échec brutal sur le champ many « superflu », car il semble que Crowdin ne soit pas conforme à ce fichier plurals.rb.

Je pense que c’est plus compliqué.
Les traductions front-end sont interprétées par le module node @messageformat/core en utilisant messageformat-wrapper.

Le problème est que les règles de pluriel sont définies à deux endroits. L’autre a récemment été modifié pour utiliser une bibliothèque (DEV: Upgrade the MessageFormat library (JS) · discourse/discourse@301713e · GitHub).

Cependant, les pluriels définis dans la bibliothèque ne sont pas toujours les mêmes que ceux que Discourse utilisait auparavant, et ceux de plurals.rb n’ont pas été modifiés. Inconsistency in plural definition

Mais cela n’explique pas pourquoi Crowdin a créé une version séparée pour beaucoup

2 « J'aime »

J’ai ajouté les règles de champ nécessaires pour la traduction, mais ce n’est pas une solution pour ce bug, juste une compatibilité pour la sortie Crowdin.

Je pense que la règle à la fin de la ligne a également besoin d’un ajustement.
Pour le moment, cela ne mentionne toujours que « one » et « other ».
rule: lambda { |n| n == 1 ? :one : :other }

Ouais, j’ai fait une erreur. Je l’ai corrigée avec amend et j’ai oublié de la pousser sans --force. C’est corrigé maintenant.

Merci à tous, continuons à suivre le problème plus large dans ce sujet :

2 « J'aime »