Foxtable(狐表)用户栏目专家坐堂 → Word文件文字翻译问题


  共有3304人关注过本帖树形打印复制链接

主题:Word文件文字翻译问题

帅哥哟,离线,有人找我吗?
azlm100
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:18 积分:289 威望:0 精华:0 注册:2019/8/7 15:51:00
Word文件文字翻译问题  发帖心情 Post By:2023/7/28 16:53:00 [只看该作者]

老师们

做了一个文字翻译跟文档翻译的应用。

是调用百度翻译的API来进行翻译的。

关于文档翻译,目前已经做好了Excel的翻译功能。但是在Word的翻译上一直出问题。

各位老师能否帮忙看下 。

我使用过for each 文档的所有段落。然后每个段落拿去API上翻译回来替换上去。但是他翻译回来的内容会全部合并到一个段落去了。

如果有空白的段落还会报错。

 If path.Contains(".doc") Then
        Dim app As New MSWord.Application
        Try
            Dim doc = app.Documents.Open(path)
            Dim SenCount As Integer = Doc.Sentences.Count '取得所选内容的句子数
            Dim K As Integer
            For k = 1 To sencount
                Dim strs As String  = doc.paragraphs(k).range.text
                If strs.Length > 1 Then
                    doc.paragraphs(k).range.text =   Functions.Execute("translation_language",strs,s,r)
                End If
                strs = ""
            Next
            rpath  = "c:\reports\test.doc"
            Doc.Save(rpath)
            Doc.Close
            app.Quit
        Catch ex As exception
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:翻译.foxdb

            msgbox(ex.message)
        Finally
        End Try
    End If

具体了可以查看附件



 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110738 积分:563610 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/7/28 17:09:00 [只看该作者]

Sentences是句子不是段落:https://www.baidu.com/s?wd=Sentence%20paragraph

 回到顶部
帅哥哟,离线,有人找我吗?
azlm100
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:18 积分:289 威望:0 精华:0 注册:2019/8/7 15:51:00
  发帖心情 Post By:2023/7/31 8:16:00 [只看该作者]

  For Each k As Object In Doc.Paragraphs
         Dim strs As String  = k.range.text
         If strs.Length > 1 Then
             k.range.text =   Functions.Execute("translation_language",strs,s,r)
                End If
                strs = ""
            Next

我试过遍历段落。例如有4段文字,他返回的结果会把4段文字合并成了一段。
例如遍历第一段文字,正常的。
遍历第二段文字的时候会变成   第一段 & 第二段文字。最后就全部变成了一段。
所以我才试下循环句子,循环句子就不会这种情况了。但是空白的段落就会报错。




 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110738 积分:563610 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/7/31 8:53:00 [只看该作者]

网上搜了一下好像是替换段落文字后会取消段落的格式,需要替换前记录一下格式,然后替换后重设段落格式:https://www.656463.com/wenda/CthzfczdwbggWordzddlgshczcxj_156

 回到顶部
帅哥哟,离线,有人找我吗?
azlm100
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:18 积分:289 威望:0 精华:0 注册:2019/8/7 15:51:00
  发帖心情 Post By:2023/7/31 10:17:00 [只看该作者]

非常感谢老师。

这个帮助完美的帮我解决了段落替换。

现在测试中又发现一个问题,就是Wrod里出现了单元格之类的非文字段落就会报错。

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:测试.zip



 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110738 积分:563610 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/7/31 10:27:00 [只看该作者]

网上搜索,说是不能使用段落遍历表格,会出错,至于解决方法没找到

 回到顶部
帅哥哟,离线,有人找我吗?
azlm100
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:18 积分:289 威望:0 精华:0 注册:2019/8/7 15:51:00
  发帖心情 Post By:2023/8/1 14:18:00 [只看该作者]

老师找到方法了。

因为翻译只需要获取到文字,然后拿文字去翻译回来再覆盖。
所以不需要试用段落。
使用  content = doc.content.text
这句可以获取Word的全部文档内容。
然后再拆分成数组,循环数组去翻译。再使用查找替换。

现在还有一个小问题了,就是拿文字去翻译,需要去掉前后空格,但是翻译完成后替换也没有了前后空格,这样位置就不对了。
还要再查查

 回到顶部