Javascript 如何处理DjangoCMS i18n URL(/en/my_page、/fr/my_page…)和AngularJS?

Javascript 如何处理DjangoCMS i18n URL(/en/my_page、/fr/my_page…)和AngularJS?,javascript,angularjs,django,internationalization,django-cms,Javascript,Angularjs,Django,Internationalization,Django Cms,我试图学习AngularJS和DjangoCMS,所以我创建了一个新项目,将它们结合使用 状态 默认情况下,DjangoCMS使用第一个URL段来确定站点的语言(/en/,/fr/)。默认情况下,每个不包含语言段的URL都将重定向到/en/ 这意味着,我所有的AngularJS ajax调用都需要发送到/en/api/或/fr/api/ 问题 我想用第一部分来确定国际化的语言 还将第一段全局设置为我的AngularJS应用程序,这样我就不需要在每次ajax调用中指定它 可能解 我发现的一个解决方

我试图学习AngularJS和DjangoCMS,所以我创建了一个新项目,将它们结合使用

状态

默认情况下,DjangoCMS使用第一个URL段来确定站点的语言(/en/,/fr/)。默认情况下,每个不包含语言段的URL都将重定向到/en/

这意味着,我所有的AngularJS ajax调用都需要发送到/en/api/或/fr/api/

问题

  • 我想用第一部分来确定国际化的语言

  • 还将第一段全局设置为我的AngularJS应用程序,这样我就不需要在每次ajax调用中指定它

  • 可能解

    我发现的一个解决方案是在Django端为每种语言使用不同的模板

    • 英文模板将在
      标记中包含
    • 法语模板将在
      标记中包含
      ,我可以使用预先绑定的规则集,也可以简单地将本地脚本添加到脚本列表()
    我想这也适用于更多的语言,但这意味着我必须为每种语言创建特定的模板和代码

    最佳解决方案?

    我认为最好是在Angular应用程序中定义一个逻辑,根据第一个url段加载语言脚本,并在应用程序中全局确定第一个段。我们将避免为每种语言编写代码这个解决方案可行吗?我搜索了如何在Angular上动态设置基本url,但没有找到任何有趣的结果

    我不确定这个问题应该在StackOverflow上,但我真的不知道其他StackExchange论坛


    谢谢

    我会这样做:

  • 加载i18n模板标记:
    {%Load i18n%}
    并如下设置
    
    {%get_当前语言为语言代码%}
    
  • 当您具有如上所述的基本集时,您可以使用$provide in获取href值并将其公开给服务和指令。例如:
    
    angular.module(“myapp.services”,[])
    .config([“$provide”,函数($provide){
    $provide.value(“base”,“base”).attr(“href”);
    }]);
    
    并将其注入进行ajax调用的服务:
    
    angular.module(“myapp.services”).factory(“myService”、[“base”、function(base){
    var uri=base+“api/some_url”;
    ...
    

  • 我会这样做:

  • 加载i18n模板标记:
    {%Load i18n%}
    并如下设置
    
    {%get_当前语言为语言代码%}
    
  • 当您具有如上所述的基本集时,您可以使用$provide in获取href值并将其公开给服务和指令。例如:
    
    angular.module(“myapp.services”,[])
    .config([“$provide”,函数($provide){
    $provide.value(“base”,“base”).attr(“href”);
    }]);
    
    并将其注入进行ajax调用的服务:
    
    angular.module(“myapp.services”).factory(“myService”、[“base”、function(base){
    var uri=base+“api/some_url”;
    ...
    

  • 感谢您的回答。实际上,在设置
    时,应用程序将为每次通话自动设置基数。因此,无需手动添加。您的解决方案与我对应用程序所做的几乎相同,并且工作正常:)感谢您的回答。实际上,在设置
    时,应用程序将为每次通话自动设置基数。因此,无需手动添加。您的解决方案与我对应用程序所做的几乎相同,并且工作正常:)