跳转至内容
  • 版块
  • 标签
  • 热门
  • 用户
  • 群组
皮肤
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • 默认(Flatly)
  • 不使用皮肤
折叠

Odoo 中文社区

  1. 主页
  2. 版块
  3. Odoo 开发与实施交流
  4. 为何通过position="attributes"来定位修改字符串为中文时报错

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

已定时 已固定 已锁定 已移动 Odoo 开发与实施交流
9 帖子 4 发布者 6.0k 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • Y 离线
    Y 离线
    youring
    写于 最后由 编辑
    #1

    有时为了绕过翻译,直接通过模块中的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
    • JoshuaJ 离线
      JoshuaJ 离线
      Joshua 管理员
      写于 最后由 编辑
      #2

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

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

      1 条回复 最后回复
      0
      • Y 离线
        Y 离线
        youring
        写于 最后由 编辑
        #3

        用replace我担心的是:

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

        1 条回复 最后回复
        0
        • C 离线
          C 离线
          ccdos
          写于 最后由 编辑
          #4


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

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

          1 条回复 最后回复
          0
          • J 离线
            J 离线
            jerry79
            写于 最后由 编辑
            #5

            [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
            • JoshuaJ 离线
              JoshuaJ 离线
              Joshua 管理员
              写于 最后由 编辑
              #6

              你上面的例子没有写上优先级
              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 离线
                Y 离线
                youring
                写于 最后由 编辑
                #7


                如果B = C呢

                1 条回复 最后回复
                0
                • JoshuaJ 离线
                  JoshuaJ 离线
                  Joshua 管理员
                  写于 最后由 编辑
                  #8

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

                  如果B = C呢
                  [/quote]

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

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

                  1 条回复 最后回复
                  0

                  • 登录

                  • 没有帐号? 注册

                  • 登录或注册以进行搜索。
                  • 第一个帖子
                    最后一个帖子
                  0
                  • 版块
                  • 标签
                  • 热门
                  • 用户
                  • 群组