dcloudio / uni-app

A cross-platform framework using Vue.js
https://uniapp.dcloud.io
Apache License 2.0
39.9k stars 3.62k forks source link

androidPrivacy拒绝按钮未显示,目前使用文档中3.2.1以下配置方式。换成3.2.1以上则国际化(%%之间的文字)无法读出 #3844

Open whoooami opened 2 years ago

whoooami commented 2 years ago

问题描述

image

复现步骤

点击查看文档地址:

现在使用源代码

        {
            "version" : "32",
            "prompt" : "template",
            "template" : {
                "title" : "%privacy.template.title%",
                "message" : "%privacy.template.message%",
                "buttonAccept" : "%privacy.template.buttonAccept%",
                "buttonRefuse" : "%privacy.template.buttonRefuse%",
                "disagreeMode" : {
                    "support" : true,
                    "loadNativePlugins" : true
                },
                "second" : {
                    "title" : "%privacy.template.second.title%",
                    "message" : "%privacy.template.second.message%",
                    "buttonAccept" : "%privacy.template.second.buttonAccept%",
                    "buttonRefuse" : "%privacy.template.second.buttonRefuse%"
                }
            },
            "styles" : {
                "backgroundColor" : "#ffffff",
                "borderRadius" : "5px",
                "title" : {
                    "color" : "#426ab3"
                },
                "buttonAccept" : {
                    "color" : "#426ab3"
                },
                "buttonRefuse" : {
                    "color" : "#000000"
                }
            }
        }
image

换成3.2.1以上的方式, 可以出现拒绝按钮,但没有读出国际化内容

        {
            "version" : "32",
            "prompt" : "template",
            "title" : "%privacy.template.title%",
            "message" : "%privacy.template.message%",
            "buttonAccept" : "%privacy.template.buttonAccept%",
            "buttonRefuse" : "%privacy.template.buttonRefuse%",
            "second" : {
                "title" : "%privacy.template.second.title%",
                "message" : "%privacy.template.second.message%",
                "buttonAccept" : "%privacy.template.second.buttonAccept%",
                "buttonRefuse" : "%privacy.template.second.buttonRefuse%"
            },
            "styles" : {
                "backgroundColor" : "#ffffff",
                "borderRadius" : "5px",
                "title" : {
                    "color" : "#426ab3"
                },
                "buttonAccept" : {
                    "color" : "#426ab3"
                },
                "buttonRefuse" : {
                    "color" : "#000000"
                }
            }
        }
image

预期结果

实际结果 IOS 正常, Android 没触发

系统信息:

whoooami commented 1 year ago

只有我有这个问题吗?

whoooami commented 1 year ago

有那位大佬知道的吗?

whoooami commented 1 year ago

还是没有解决

whoooami commented 1 year ago

依然如此?

whoooami commented 1 year ago

版权证书都下来了,这个问题依旧

whoooami commented 1 year ago

@dcloud-robot

zhenyuWang commented 1 year ago

拒绝按钮不显示看起来是你的配置没有生效导致,使用文档中的配置示例测试没有问题

whoooami commented 1 year ago

@zhenyuWang 先谢过了,能麻烦您再贴下文档地址吗?那应该是我看错文档了

zhenyuWang commented 1 year ago

@zhenyuWang 先谢过了,能麻烦您再贴下文档地址吗?那应该是我看错文档了

HBuilderX3.2.1及以上版本配置方式

whoooami commented 1 year ago

@zhenyuWang 先谢过了,能麻烦您再贴下文档地址吗?那应该是我看错文档了

HBuilderX3.2.1及以上版本配置方式

先谢过了,这个3.2.1及以上的的按钮是正常的。问题在于国际化的部分无法读出对应的内容。我一会再试下,谢谢您

zhenyuWang commented 1 year ago

@zhenyuWang 先谢过了,能麻烦您再贴下文档地址吗?那应该是我看错文档了

HBuilderX3.2.1及以上版本配置方式

先谢过了,这个3.2.1及以上的的按钮是正常的。问题在于国际化的部分无法读出对应的内容。我一会再试下,谢谢您

我这边测试没有问题,这是测试工程

whoooami commented 1 year ago

@zhenyuWang 先谢过了,能麻烦您再贴下文档地址吗?那应该是我看错文档了

HBuilderX3.2.1及以上版本配置方式

先谢过了,这个3.2.1及以上的的按钮是正常的。问题在于国际化的部分无法读出对应的内容。我一会再试下,谢谢您

我这边测试没有问题,这是测试工程

非常感谢 ,我运行了您的项目,的确是正常的。但是我本地按照您的目录调试一直都是不行的。我发下我的结构吧。 我是用脚手架搭建的项目,src/18n/lang/下面是之前项目级别的语言(工程内部正常)。locale是看您项目目录新加的 根目录 src/下各放了一份

image

项目启动时有一段判断语言并保存i18n的代码如下:在onLaunch中调用。

     async setLocale() {
                // let lang = 'zh-CN';
                try {
                    let lang = uni.getStorageSync(INIT.LANG);
                    if (!lang) {
                        const res = uni.getSystemInfoSync(); 
                        lang = res.language;
                        lang = lang.indexOf("en")>=0? "en-US": lang;
                        // lang = res.language.replace("-", "");
                        uni.setStorageSync(INIT.LANG, lang);
                    }
                    this._i18n.locale = lang;
                    console.log("this._i18n.locale:", this._i18n.locale);
                    this.$store.commit(INIT.SET_LANG, lang);
                } catch (e) {
                    console.error(e);
                }
                // this._i18n.locale = 'zh-CN';
            },

执行结果

image

有可能是上面的代码引起的吗?还有一个额外因素:我是英文Mac系统,不过这个应该没有影响吧 我本地显示的语言类型 this._i18n.locale:, en-US

zhenyuWang commented 1 year ago

建议再详细阅读下文档,并由最简demo(比如我的测试工程)一步步增加内容,从而实现需求或复现问题从而确定问题点 非框架问题还请关下该 issue,如后续确认框架问题,可 reopen 该 issue,并提供测试工程

whoooami commented 1 year ago

建议再详细阅读下文档,并由最简demo(比如我的测试工程)一步步增加内容,从而实现需求或复现问题从而确定问题点 非框架问题还请关下该 issue,如后续确认框架问题,可 reopen 该 issue,并提供测试工程

好的,我准备一个干净的测试工程看下。麻烦您了

whoooami commented 1 year ago

建议再详细阅读下文档,并由最简demo(比如我的测试工程)一步步增加内容,从而实现需求或复现问题从而确定问题点 非框架问题还请关下该 issue,如后续确认框架问题,可 reopen 该 issue,并提供测试工程

您好 我新建了一个工程。测试了一下正常。 对比了一下原有项目和Demo工程。发现Demo工程node_modules有一些新的包是原项目中不存在的。比如说 i18n。还有在/@dcloudio/uni-cli-shared因为版本问题里面的parseLocaleJson也是原有项目中不存在的。 我重新删除了node_modules并安装,但是项目问题依旧。从早上折腾到现在,我又从原项目拉出一个可以测试的项目,麻烦有空了帮我看下,谢谢 privacy i18n读取失败工程。页面i18n正常工程链接 项目已推送

whoooami commented 1 year ago

@zhenyuWang 测试工程链接 劳驾问下这个测试工程可以吗?还有什么需要我配合提供的吗?

zhenyuWang commented 1 year ago

@zhenyuWang 测试工程链接 劳驾问下这个测试工程可以吗?还有什么需要我配合提供的吗?

把依赖版本更新下呢?非框架问题建议自行解决

whoooami commented 1 year ago

@zhenyuWang 测试工程链接 劳驾问下这个测试工程可以吗?还有什么需要我配合提供的吗?

把依赖版本更新下呢?非框架问题建议自行解决

    "@dcloudio/uni-app-plus": "^2.0.0-32320210825",
    "@dcloudio/uni-h5": "^2.0.0-32320210825",
    "@dcloudio/uni-helper-json": "^1.0.13",
    "@dcloudio/uni-mp-360": "^2.0.0-32320210825",
    "@dcloudio/uni-mp-alipay": "^2.0.0-32320210825",
    "@dcloudio/uni-mp-baidu": "^2.0.0-32320210825",
    "@dcloudio/uni-mp-qq": "^2.0.0-32320210825",
    "@dcloudio/uni-mp-toutiao": "^2.0.0-32320210825",
    "@dcloudio/uni-mp-vue": "^2.0.0-32320210825",
    "@dcloudio/uni-mp-weixin": "^2.0.0-32320210825",
    "@dcloudio/uni-quickapp-native": "^2.0.0-32320210825",
    "@dcloudio/uni-quickapp-webview": "^2.0.0-32320210825",
    "@dcloudio/uni-stat": "^2.0.0-32320210825",

我把node_modules删除后,重新install了。里面的版本号是带有[^]的, 这样依赖就自动更新了吧?还需要操作什么吗?

whoooami commented 1 year ago

@zhenyuWang 测试工程链接 劳驾问下这个测试工程可以吗?还有什么需要我配合提供的吗?

把依赖版本更新下呢?非框架问题建议自行解决

现在的问题是项目中自行配置的i18n是生效的。这个在index.vue页面中$t("app.timebook")的显示已经测试成功了 [`

{{ $t('app.timebook') }}

`](https://github.com/whoooami/ua-i18n/blob/72bd9e1d5ec3487c6d511ab03fc2c804c951c91d/src/pages/index/index.vue#L1-L7) 但是通过androidPrivacy.json用3.2.1的格式一直没有读取成功,所以怀疑是框架的问题。 还有项目现在manifest.json中 ios shortcuts 快捷菜单也是无效的,这个对不同语言的用户使用上麻烦较大,所以特来麻烦您给于指点。。。

luo772435545 commented 1 year ago

你换成框架的zh-Hans、en的命名,然后必须放在locale的首层。这样可以出来

whoooami commented 1 year ago
image

我试了下。因为我是脚手架创建的。所以放在src目录下面。现在在项目根目录也放了一份,还是不行。 image

我的 理解可能还有问题,增加后的文件我也push上去了。麻烦再指点下,谢谢

whoooami commented 1 year ago

你换成框架的zh-Hans、en的命名,然后必须放在locale的首层。这样可以出来

privacy i18n读取失败工程。页面i18n正常工程链接 这个是测试工程地址,这个问题困扰我太久了,要不是工程有点大,就直接新建一个了。 目前只能手工更换,分开打包,还好目前只有中英两种,大佬如果有时间的话帮忙看下,先谢过了。