Odoo 中文社区

    • 注册
    • 登录
    • 搜索
    • 版块
    • 标签
    • 热门
    • 用户
    • 群组

    Odoo中文社区可以通过以下两个域名访问:shine-it.net , odoo.net.cn

    由于系统升迁的原因,本论坛部分较早期的内容存在格式和链接损坏失效的问题,并非本论坛系统本身的缺陷,望谅解

    本社区没有维护任何QQ群讨论组,任何与本社区同名的QQ群讨论组的言论与本社区无关!

    开发人员可以登录gitter讨论组: http://gitter.im/odoo-china/Talk, 需要github账号

    如果您登录系统碰到问题,请在微信公众号留言:

    为何通过position="attributes"来定位修改字符串为中文时报错

    Odoo 开发与实施交流
    4
    9
    5626
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • Y
      youring 最后由 编辑

      有时为了绕过翻译,直接通过模块中的string来固定术语,例如
                      <field name="price_subtotal" string="小计"/>
      这样写入中文没问题

      而通过position="attributes"来定位修改字符串为中文时则报错
                      <xpath expr="//field[@name='price_subtotal']" position="attributes">
                          <attribute name="string">小计</attribute>
                      </xpath>


      验证字段 arch 时发生错误:Invalid XML for View Architecture!<br />Traceback (most recent call last):<br />&nbsp; File &quot;/opt/oe7/openerp/netsvc.py&quot;, line 292, in dispatch_rpc<br />&nbsp; &nbsp; result = ExportService.getService(service_name).dispatch(method, params)<br />&nbsp; File &quot;/opt/oe7/openerp/service/web_services.py&quot;, line 626, in dispatch<br />&nbsp; &nbsp; res = fn(db, uid, *params)<br />&nbsp; File &quot;/opt/oe7/openerp/osv/osv.py&quot;, line 188, in execute_kw<br />&nbsp; &nbsp; return self.execute(db, uid, obj, method, *args, **kw or {})<br />&nbsp; File &quot;/opt/oe7/openerp/osv/osv.py&quot;, line 144, in wrapper<br />&nbsp; &nbsp; raise except_osv(inst.name, inst.value)<br />except_osv: (&#039;ValidateError&#039;, u&#039;\u9a8c\u8bc1\u5b57\u6bb5 arch \u65f6\u53d1\u751f\u9519\u8bef\uff1aInvalid XML for View Architecture!&#039;)<br /><br />
      
      1 条回复 最后回复 回复 引用 0
      • Joshua
        Joshua 管理员 最后由 编辑

        LZ尝试直接replace,<attribute name="string">小计</attribute>里面可能不支持中文。

        【上海先安科技】(joshua AT openerp.cn),欢迎关注公众号:openerp_cn

        1 条回复 最后回复 回复 引用 0
        • Y
          youring 最后由 编辑

          用replace我担心的是:

          A 原视图
          B 视图继承了A中的a字段
          C 视图replace了A中的a字段(用同名a字段替换,仅增加了string)  ----------1
          C 视图replace了A中的a字段(不再声明字段,即删除) ---------------------2
          1 和 2 两种情况会不会对B造成影响?
          也就是说 replace对其它相关视图破坏性如何?

          1 条回复 最后回复 回复 引用 0
          • C
            ccdos 最后由 编辑


            xml里面 这 不带引号的中文 都是不行的

            不知道 应该怎么说, 这里应该有个术语吧

            1 条回复 最后回复 回复 引用 0
            • J
              jerry79 最后由 编辑

              [quote author=youring link=topic=14561.msg25164#msg25164 date=1384008672]
              用replace我担心的是:

              A 原视图
              B 视图继承了A中的a字段
              C 视图replace了A中的a字段(用同名a字段替换,仅增加了string)  ----------1
              C 视图replace了A中的a字段(不再声明字段,即删除) ---------------------2
              1 和 2 两种情况会不会对B造成影响?
              也就是说 replace对其它相关视图破坏性如何?
              [/quote]
              用replace可以这样做:

              <br />&lt;field name=&quot;price&quot; position=&quot;replace&gt;<br />&nbsp;  &lt;field name=&quot;price&quot; invisible=&quot;1&quot;/&gt;<br />&nbsp;  &lt;field name=&quot;new_price&quot;/&gt;<br />&lt;/field&gt;<br />
              


              如果字段重名,如你的情况,直接replace即可。
              你说的第二种情况会对B造成影响,所以一般replace的字段,都会再写一次,并设置invisible=1

              1 条回复 最后回复 回复 引用 0
              • Joshua
                Joshua 管理员 最后由 编辑

                你上面的例子没有写上优先级
                if B > 😄 没有影响
                if B < 😄 C2报错,因为C已经删除了字段a,B就会如果是以A的a字段为锚点,就会找不到a字段。

                在你不了解有哪些继承了这个view的时候当然replace存在更多风险,对于你上面说的情况还可以用[b]翻译[/b]来实现,:

                这里也说了下视图的叠加: http://cn.openerp.cn/view_groups/

                【上海先安科技】(joshua AT openerp.cn),欢迎关注公众号:openerp_cn

                1 条回复 最后回复 回复 引用 0
                • Y
                  youring 最后由 编辑


                  如果B = C呢

                  1 条回复 最后回复 回复 引用 0
                  • Joshua
                    Joshua 管理员 最后由 编辑

                    [quote author=youring link=topic=14561.msg25238#msg25238 date=1384389049]

                    如果B = C呢
                    [/quote]

                    没测试过,不过应该会按照数据库id

                    【上海先安科技】(joshua AT openerp.cn),欢迎关注公众号:openerp_cn

                    1 条回复 最后回复 回复 引用 0
                    • First post
                      Last post