Django国际化(I18N)没有改变文本(Django Internationalization (I18N) not changing text)
我创建了一个简单的网站来测试国际化,但我不能按照我想要的方式工作。 我想更改views.py中的消息而不检查request.LANGUAGE_CODE (正确显示)。
我可以使用前缀/ en /和/ pt-br /转到URL,但它们不会更改模板中的文本。
我试过跑
django-admin makemessages --locale=pt_BR
我换了线
#: mytest/views.py:7 msgid "Welcome to my site." msgstr "Bem vindo ao meu site."
跑
django-admin compilemessages --locale=pt_BR
PS :(即使它错了,我也试过django-admin makemessages / compilemessages --locale = pt-br)
我在settings.py中更改了什么(添加了我的应用程序,添加了区域设置中间件,添加了一些内部化设置)
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'mytest' ] MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.locale.LocaleMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', ] # Internationalization # https://docs.djangoproject.com/en/1.10/topics/i18n/ LOCALE_PATHS = [ os.path.join(BASE_DIR, 'locale/translations/'), ] LANGUAGE_CODE = 'en-us' from django.utils.translation import ugettext_lazy as _ LANGUAGES = [ ('pt-br', _('Portuguese')), ('en', _('English')), ] TIME_ZONE = 'UTC' USE_I18N = True USE_L10N = True USE_TZ = True
views.py
from django.shortcuts import render from django.utils.translation import ugettext_lazy as _ def index(request): print(request.LANGUAGE_CODE) #this shows correctly the prefix in the url output = _("Welcome to my site.") context = {"test_translate": output} return render(request, "mytest/index.html", context)
urls.py
from django.conf.urls.i18n import i18n_patterns from mytest import views urlpatterns = [ ] urlpatterns += i18n_patterns( url(r'^$', views.index, name='index'), )
I created an simple website to test internationalization, but I can't make it work the way I wanted. I would like to change messages in my views.py without checking the request.LANGUAGE_CODE (which is showing correctly).
I can go to the urls with prefix /en/ and /pt-br/ but they don't change the text in the template.
I tried running
django-admin makemessages --locale=pt_BR
I changed the lines
#: mytest/views.py:7 msgid "Welcome to my site." msgstr "Bem vindo ao meu site."
ran
django-admin compilemessages --locale=pt_BR
PS: (even though it is wrong, I tried django-admin makemessages/compilemessages --locale=pt-br as well)
What I changed in settings.py (added my app, added locale middleware, added some internalization settings)
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'mytest' ] MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.locale.LocaleMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', ] # Internationalization # https://docs.djangoproject.com/en/1.10/topics/i18n/ LOCALE_PATHS = [ os.path.join(BASE_DIR, 'locale/translations/'), ] LANGUAGE_CODE = 'en-us' from django.utils.translation import ugettext_lazy as _ LANGUAGES = [ ('pt-br', _('Portuguese')), ('en', _('English')), ] TIME_ZONE = 'UTC' USE_I18N = True USE_L10N = True USE_TZ = True
views.py
from django.shortcuts import render from django.utils.translation import ugettext_lazy as _ def index(request): print(request.LANGUAGE_CODE) #this shows correctly the prefix in the url output = _("Welcome to my site.") context = {"test_translate": output} return render(request, "mytest/index.html", context)
urls.py
from django.conf.urls.i18n import i18n_patterns from mytest import views urlpatterns = [ ] urlpatterns += i18n_patterns( url(r'^$', views.index, name='index'), )
原文:https://stackoverflow.com/questions/39311230
最满意答案
生成的类名中存在名称冲突。 如果你运行wsimport,你会看到错误:
[ERROR] A class/interface with the same name "ru.rg.ens.DayClosingResponse" is already in use. Use a class customization to resolve this conflict.
您可以通过将结果元素的类型名称从DayClosingResponse更改为DayClosingResponseType来修复,这样它就不会与包装元素名称冲突,例如:
<s:element name="dayClosingResponse"> <s:complexType> <s:sequence> <s:element name="dayClosingResult" type="s0:DayClosingResponseType"/> </s:sequence> </s:complexType> </s:element> <s:complexType name="DayClosingResponseType"> <s:sequence> <s:element minOccurs="0" name="status" type="s0:Status"/> <s:element minOccurs="0" name="operations" type="s0:ArrayOfItemsOperation"/> </s:sequence> </s:complexType>
You have a name collision in the generated class names. If you run wsimport you'll see the error:
[ERROR] A class/interface with the same name "ru.rg.ens.DayClosingResponse" is already in use. Use a class customization to resolve this conflict.
You can fix by changing the type name of the result element from DayClosingResponse to DayClosingResponseType so it doesn't collide with the wrapper element name, e.g. with:
<s:element name="dayClosingResponse"> <s:complexType> <s:sequence> <s:element name="dayClosingResult" type="s0:DayClosingResponseType"/> </s:sequence> </s:complexType> </s:element> <s:complexType name="DayClosingResponseType"> <s:sequence> <s:element minOccurs="0" name="status" type="s0:Status"/> <s:element minOccurs="0" name="operations" type="s0:ArrayOfItemsOperation"/> </s:sequence> </s:complexType>
相关问答
更多-
正如您所注意到的,数据绑定类( MyTransaction等)正在生成为存根类的内部类。 因此每个存根都有自己的MyTransaction类副本,与MyTransaction副本不兼容。 wsdl2java参数-u将使数据绑定类生成为常规类,每个类都在其自己的文件中。 如果两个MyTransaction定义实际上是相同的,那么wsdl2java将为每个MyTransaction对象生成相同的类文件,并且您将能够在两个服务之间共享MyTransaction对象。 该页面详细描述了wsdl2java参数。 As ...
-
我想我现在已经解决了这个问题。 看起来由于某种原因,eclipse WSDL编辑器没有将错误添加到WSDL的绑定部分。 所以当我补充说:似乎ADB绑定不支持复杂类型,我已经改为xmlbeans,并且它运行良好,尽管实现更简单。 It seems that ADB binding does not support complex type, I've changed to xmlbeans, and it worked well, though the implemention are more trivial.
从Axis迁移到Axis2(Migrating from Axis to Axis2)[2022-03-18]
Axis 2是该框架的重大改写。 升级没有真正的捷径,你需要处理它或保留在Axis 1上(正如有些人真正决定做的那样)。 官方迁移指南提供了一些有用的提示,但它没有详细说明为了成功完成迁移您需要了解的所有内容。 由于你将经历升级的痛苦,如果我不建议你看看Apache CXF ,我会失职。 它是一个更现代的Web服务框架,支持JAX-WS 和 JAX-RS。 如果你签订了第一个开发合同,那么你的客户就不必升级了(只是服务器实现方)。 Axis 2 was a significant rewrite of th ...好的,当你在java项目中使用外部jar时,你必须将它添加到轴lib文件夹(路径:/ web_server_local_folder / axis / WEB-INF / lib)。 我解决了我在该文件夹中添加gson jar的问题。 Ok, when you use an external jar in your java project you have to add it in the axis lib folder (path: /web_server_local_folder/axis/WEB-I ...Axis2 wsdl2java抛出InvocationTargetException(Axis2 wsdl2java throws InvocationTargetException)[2024-01-29]
生成的类名中存在名称冲突。 如果你运行wsimport,你会看到错误: [ERROR] A class/interface with the same name "ru.rg.ens.DayClosingResponse" is already in use. Use a class customization to resolve this conflict. 您可以通过将结果元素的类型名称从DayClosingResponse更改为DayClosingResponseType来修复,这样它就不会与包装元 ...最终,我最终让客户适当地更改了他们的WSDL以删除“任何”类型,现在它可以正常工作。 但是,我想我可以使用JAXB数据绑定来解决这个问题,因为我已经读过它具有“任何”类型的“最佳”实现,但是因为已经有很多依赖于ADB数据绑定的开发,所以我没有想改变这个。 Ultimately, I ended up just having the customer change their WSDL appropriately to remove the "any" types, and it now works. How ...在我与Axis 2 v1.4.1的交易中尝试理解这一点后,我最终浏览了源代码。 如WSDL2Java页面和用法文本中所述,-E选项被传递给数据绑定模块 - 在-Eosv的情况下,传递给的“osv”子选项是ADB模块。 深入研究ADB的代码生成,我发现osv(OFF_STRICT_VALIDATION)选项仅用于确定minOccurs时。 来自Axis 2 v1.4.1中的org.apache.axis2.schema.SchemaCompiler: // if the strict validation o ...我找到的唯一的Workarround如下: 创建一个新的DynamicWebProject 创建一个新的WSDL (您可以复制旧的或任何您喜欢的) 创建一个新的Java Bean Skelleton (或Client ) 现在WSDL2Java将再次运行一段时间,直到它再次被损坏。 您将能够通过重新生成Java Bean Skelleton来解决此Java Bean Skelleton 。 您不需要每次都创建一个新项目。 编辑: 现在找到了这个问题的实际解决方案。 我将SVN-Plugin从Subversi ...我相信这会让你得到你想要的。 stub._getServiceClient().getOptions().getTo().getAddress(); I believe this will get you what you want. stub._getServiceClient().getOptions().getTo().getAddress();相关文章
更多- I18N 国际化 简介
- I18n的一个问题
- Django and full-text search
- SVG文本text
- 网络挖掘技术——text mining
- java.text.DecimalFormat 的问题
- Full-Text Search in ASP.NET using Lucene.NET
- JSP 国际化详解
- Django下载及安装
- 固定文本国际化
最新问答
更多- 您如何使用git diff文件,并将其应用于同一存储库的副本的本地分支?(How do you take a git diff file, and apply it to a local branch that is a copy of the same repository?)
- 将长浮点值剪切为2个小数点并复制到字符数组(Cut Long Float Value to 2 decimal points and copy to Character Array)
- OctoberCMS侧边栏不呈现(OctoberCMS Sidebar not rendering)
- 页面加载后对象是否有资格进行垃圾回收?(Are objects eligible for garbage collection after the page loads?)
- codeigniter中的语言不能按预期工作(language in codeigniter doesn' t work as expected)
- 在计算机拍照在哪里进入
- 使用cin.get()从c ++中的输入流中丢弃不需要的字符(Using cin.get() to discard unwanted characters from the input stream in c++)
- No for循环将在for循环中运行。(No for loop will run inside for loop. Testing for primes)
- 单页应用程序:页面重新加载(Single Page Application: page reload)
- 在循环中选择具有相似模式的列名称(Selecting Column Name With Similar Pattern in a Loop)
- System.StackOverflow错误(System.StackOverflow error)
- KnockoutJS未在嵌套模板上应用beforeRemove和afterAdd(KnockoutJS not applying beforeRemove and afterAdd on nested templates)
- 散列包括方法和/或嵌套属性(Hash include methods and/or nested attributes)
- android - 如何避免使用Samsung RFS文件系统延迟/冻结?(android - how to avoid lag/freezes with Samsung RFS filesystem?)
- TensorFlow:基于索引列表创建新张量(TensorFlow: Create a new tensor based on list of indices)
- 企业安全培训的各项内容
- 错误:RPC失败;(error: RPC failed; curl transfer closed with outstanding read data remaining)
- C#类名中允许哪些字符?(What characters are allowed in C# class name?)
- NumPy:将int64值存储在np.array中并使用dtype float64并将其转换回整数是否安全?(NumPy: Is it safe to store an int64 value in an np.array with dtype float64 and later convert it back to integer?)
- 注销后如何隐藏导航portlet?(How to hide navigation portlet after logout?)
- 将多个行和可变行移动到列(moving multiple and variable rows to columns)
- 提交表单时忽略基础href,而不使用Javascript(ignore base href when submitting form, without using Javascript)
- 对setOnInfoWindowClickListener的意图(Intent on setOnInfoWindowClickListener)
- Angular $资源不会改变方法(Angular $resource doesn't change method)
- 在Angular 5中不是一个函数(is not a function in Angular 5)
- 如何配置Composite C1以将.m和桌面作为同一站点提供服务(How to configure Composite C1 to serve .m and desktop as the same site)
- 不适用:悬停在悬停时:在元素之前[复制](Don't apply :hover when hovering on :before element [duplicate])
- 常见的python rpc和cli接口(Common python rpc and cli interface)
- Mysql DB单个字段匹配多个其他字段(Mysql DB single field matching to multiple other fields)
- 产品页面上的Magento Up出售对齐问题(Magento Up sell alignment issue on the products page)