J'ai recherché des informations et découvert que la plupart des fichiers js dans différentes langues sont créés séparément, puis les fichiers js correspondants sont chargés en fonction des paramètres régionaux de l'utilisateur.
Mais maintenant, en raison des limitations du scénario d'utilisation, il est préférable de le compléter dans un fichier js. Je prévois maintenant de prendre en charge 3 langues (chinois, japonais, anglais), et il existe de nombreux endroits pour afficher du texte, peut-être des centaines de lignes, et les variables sont souvent jointes au milieu.
var result=10; document.body.innerHTML="一共有"+result+"个结果";
Maintenant, j'ai deux idées. L'une consiste à enregistrer le texte de la langue dans une variable ; l'autre consiste à écrire le texte sur place sous la forme d'un tableau, puis à l'appeler en utilisant des indices.
// 方式1:判断语言后确定唯一的结果。有点割裂,而且在使用时只能看到属性名,影响思路 // {w1}是占位符,每个配置写了多遍是为了模拟数量多的时候的情景 var lang={}; if () { // 判断为中文 lang.tip1="一共有{w1}个结果"; // lang.tip2="一共有{w1}个结果"; // lang.tip3="一共有{w1}个结果"; // lang.tip4="一共有{w1}个结果"; // lang.tip5="一共有{w1}个结果"; }else if(){ // 判断为日文 lang.tip1="{w1}の結果の合計"; // lang.tip2="{w1}の結果の合計"; // lang.tip3="{w1}の結果の合計"; // lang.tip4="{w1}の結果の合計"; // lang.tip5="{w1}の結果の合計"; }else if(){ // 判断为英文 lang.tip1="There is a total of {w1} result"; // lang.tip2="There is a total of {w1} result"; // lang.tip3="There is a total of {w1} result"; // lang.tip4="There is a total of {w1} result"; // lang.tip5="There is a total of {w1} result"; } var result=10; document.body.innerHTML=lang.tip1.replace("{w1}",result);
// 方式2:判断语言后只做个下标,文字写在原地方。这样使用时可以知道这里写的是什么,但似乎比较乱 var lang; if () { // 判断为中文 lang=0; }else if(){ // 判断为日文 lang=1; }else if(){ // 判断为英文 lang=2; } var result=10; document.body.innerHTML=["一共有{w1}个结果","{w1}の結果の合計","There is a total of {w1} result"][lang].replace("{w1}",result);
En fait, la première méthode est plus élégante dans sa forme, mais personnellement, je préfère la deuxième méthode, principalement parce que je sais ce qui est écrit ici lorsque je regarde le code. Il est plus difficile de juger le contenu par noms de variables (principalement parce qu'il y a trop d'entrées. Bien que je doive traiter sémantiquement les noms de variables pour une utilisation réelle, il n'y a pas beaucoup de cas où le contenu peut être décrit brièvement et avec précision).
Avez-vous d'autres idées ou solutions ?
Vous souhaitez probablement traduire tout le texte, mais en raison du problème de structure grammaticale, l'emplacement des variables est inconnu et vous ne savez pas comment le résoudre, n'est-ce pas
En termes d'idées, vous pouvez en fait vous référer au ? idée de rendu de modèle
Laissez-moi vous donner une analogie
Vous aimez ça ?
Votre problème relève du i18n/L10n, vous pouvez peut-être trouver quelque chose comme
jQuery.i18n
JavaScript I18n et L10n
Bibliothèques javascript d'internationalisation et de localisation. La première bibliothèque a été créée par Wikimedia et présente une grande valeur de référence.
Autres contenus et bibliothèques de base i18n/L10n, ne les manquez pas
Unicode CLDR tel que table de langue chinoise simplifiée
Bibliothèque de soins intensifs
Je suis très intéressé par le développement du i18n/L10n en Chine, et nous allons apprendre et grandir ensemble.