草庐IT

node.js - 带有 mongo/node 的多语言界面和内容

coder 2023-10-31 原文

我们正在开发一个新的应用程序,它将以 saas 模型在线提供服务。用户将可以访问某些工具和一些关于如何使用它的教程。

我的问题是什么是使(界面和内容)多语言化的最佳方法。举个例子——想象一下带有以下链接的简单导航:

-section 1
|-page a
|-page b
-section 2
-section 3
|-page c

每个页面显然都包含某些标签、标题、按钮等。

我已经搜索了一段时间,我找到的最接近的答案在这里: Schema for a multilanguage database 但是,它描述了有关关系数据库的方法。

在研究了其他问题之后,看起来最好的方法是将部分/页面/标签/标题/按钮的每个名称存储为一个带有 ID 的对象,将翻译保存在一个单独的表中,包括对象的相应 ID、语言和内容。在 SQL 世界中,简单的连接就可以完成这项工作,但是由于我们使用的是 Mongo,我想有更好的方法可以做到这一点。

最佳答案

我建议将所有翻译存储在您的 mongoDb 数据库中,然后使用 Express API 从首页执行有关翻译的请求。

[FRONT] ----> [Send mongoDB _id(s)] ---> [EXPRESS API] ===> [MONGOOSE]

[FRONT] <---------- [Translations] <---- [EXPRESS API] <=== [MONGOOSE]

Mongoose 模式

       const Content = Schema({
                // Type of item you are dealing with
                contentType: {
                    type: String,
                    enum: ['link', 'title', 'section', 'page'],
                },

                // Value of translations
                translations: [{
                    languageName: String,
                    value: String,
                }],

                // All Contents that are inside
                childs: [{
                    type: Schema.Types.ObjectId,
                    ref: 'Content',
                }],
        });

数据示例(MongoDB文档)

       [{
             _id: '00000000000000000000001',
             contentType: 'section',
             translations: [{
                 languageName: 'French',
                 value: 'Section Enfant',
             }, {
                 languageName: 'English',
                 value: 'Child Section',
             }],
             dads: ['00000000000000000000002'],
        }, {
             _id: '00000000000000000000002',
             contentType: 'page',
             translations: [{
                 languageName: 'French',
                 value: 'Page Baguette',
             }, {
                 languageName: 'English',
                 value: 'Tee Page',
             }],
             childs: [],
       }]

请求示例:检索一个随机部分的所有数据

   Content.find({
       contentType: 'section',
   })
   .then((ret) => {
       if (!ret) return [];

       // Here recursively get childs and childs and childs
       // until you got everything
   })
   .then(() => {})
   .catch(err => {});

工具

Mongoose

----> Mongoose Queries

----> Mongoose Populate

Express

附言:Here是一个 github 项目,解释了如何从头开始一个 web/node 项目(安装工具等)[Babel、Gulp、Webpack、ES6...]

关于node.js - 带有 mongo/node 的多语言界面和内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40424163/

有关node.js - 带有 mongo/node 的多语言界面和内容的更多相关文章

  1. ruby - 如何将脚本文件的末尾读取为数据文件(Perl 或任何其他语言) - 2

    我正在寻找执行以下操作的正确语法(在Perl、Shell或Ruby中):#variabletoaccessthedatalinesappendedasafileEND_OF_SCRIPT_MARKERrawdatastartshereanditcontinues. 最佳答案 Perl用__DATA__做这个:#!/usr/bin/perlusestrict;usewarnings;while(){print;}__DATA__Texttoprintgoeshere 关于ruby-如何将脚

  2. ruby - 将数组的内容转换为 int - 2

    我需要读入一个包含数字列表的文件。此代码读取文件并将其放入二维数组中。现在我需要获取数组中所有数字的平均值,但我需要将数组的内容更改为int。有什么想法可以将to_i方法放在哪里吗?ClassTerraindefinitializefile_name@input=IO.readlines(file_name)#readinfile@size=@input[0].to_i@land=[@size]x=1whilex 最佳答案 只需将数组映射为整数:@land边注如果你想得到一条线的平均值,你可以这样做:values=@input[x]

  3. ruby-on-rails - 如何在我的 Rails 应用程序 View 中打印 ruby​​ 变量的内容? - 2

    我是一个Rails初学者,但我想从我的RailsView(html.haml文件)中查看Ruby变量的内容。我试图在ruby​​中打印出变量(认为它会在终端中出现),但没有得到任何结果。有什么建议吗?我知道Rails调试器,但更喜欢使用inspect来打印我的变量。 最佳答案 您可以在View中使用puts方法将信息输出到服务器控制台。您应该能够在View中的任何位置使用Haml执行以下操作:-puts@my_variable.inspect 关于ruby-on-rails-如何在我的R

  4. ruby - 寻找通过阅读代码确定编程语言的ruby gem? - 2

    几个月前,我读了一篇关于ruby​​gem的博客文章,它可以通过阅读代码本身来确定编程语言。对于我的生活,我不记得博客或gem的名称。谷歌搜索“ruby编程语言猜测”及其变体也无济于事。有人碰巧知道相关gem的名称吗? 最佳答案 是这个吗:http://github.com/chrislo/sourceclassifier/tree/master 关于ruby-寻找通过阅读代码确定编程语言的rubygem?,我们在StackOverflow上找到一个类似的问题:

  5. ruby - 查找字符串中的内容类型(数字、日期、时间、字符串等) - 2

    我正在尝试解析一个CSV文件并使用SQL命令自动为其创建一个表。CSV中的第一行给出了列标题。但我需要推断每个列的类型。Ruby中是否有任何函数可以找到每个字段中内容的类型。例如,CSV行:"12012","Test","1233.22","12:21:22","10/10/2009"应该产生像这样的类型['integer','string','float','time','date']谢谢! 最佳答案 require'time'defto_something(str)if(num=Integer(str)rescueFloat(s

  6. Unity 热更新技术 | (三) Lua语言基本介绍及下载安装 - 2

    ?博客主页:https://xiaoy.blog.csdn.net?本文由呆呆敲代码的小Y原创,首发于CSDN??学习专栏推荐:Unity系统学习专栏?游戏制作专栏推荐:游戏制作?Unity实战100例专栏推荐:Unity实战100例教程?欢迎点赞?收藏⭐留言?如有错误敬请指正!?未来很长,值得我们全力奔赴更美好的生活✨------------------❤️分割线❤️-------------------------

  7. 7个大一C语言必学的程序 / C语言经典代码大全 - 2

    嗨~大家好,这里是可莉!今天给大家带来的是7个C语言的经典基础代码~那一起往下看下去把【程序一】打印100到200之间的素数#includeintmain(){ inti; for(i=100;i 【程序二】输出乘法口诀表#includeintmain(){inti;for(i=1;i 【程序三】判断1000年---2000年之间的闰年#includeintmain(){intyear;for(year=1000;year 【程序四】给定两个整形变量的值,将两个值的内容进行交换。这里提供两种方法来进行交换,第一种为创建临时变量来进行交换,第二种是不创建临时变量而直接进行交换。1.创建临时变量来

  8. ruby-on-rails - 带有 Zeus 的 RSpec 3.1,我应该在 spec_helper 中要求 'rspec/rails' 吗? - 2

    使用rspec-rails3.0+,测试设置分为spec_helper和rails_helper我注意到生成的spec_helper不需要'rspec/rails'。这会导致zeus崩溃:spec_helper.rb:5:in`':undefinedmethod`configure'forRSpec:Module(NoMethodError)对thisissue最常见的回应是需要'rspec/rails'。但这是否会破坏仅使用spec_helper拆分rails规范和PORO规范的全部目的?或者这无关紧要,因为Zeus无论如何都会预加载Rails?我应该在我的spec_helper中做

  9. ruby - 如何使用 Selenium Webdriver 根据 div 的内容执行操作? - 2

    我有一个使用SeleniumWebdriver和Nokogiri的Ruby应用程序。我想选择一个类,然后对于那个类对应的每个div,我想根据div的内容执行一个Action。例如,我正在解析以下页面:https://www.google.com/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=puppies这是一个搜索结果页面,我正在寻找描述中包含“Adoption”一词的第一个结果。因此机器人应该寻找带有className:"result"的div,对于每个检查它的.descriptiondiv是否包含单词“adoption

  10. Ruby:如何使用带有散列的 'send' 方法调用方法? - 2

    假设我有一个类A,里面有一些方法。假设stringmethodName是这些方法之一,我已经知道我想给它什么参数。它们在散列中{'param1'=>value1,'param2'=>value2}所以我有:params={'param1'=>value1,'param2'=>value2}a=A.new()a.send(methodName,value1,value2)#callmethodnamewithbothparams我希望能够通过传递我的哈希以某种方式调用该方法。这可能吗? 最佳答案 确保methodName是一个符号,而

随机推荐