自己封装的一个实现选择图片弹框国际化的方法,返回的格式与 uni.chooseImage,因此可以把 uni.chooseImage 替换掉,在main.js挂到了Vue原型上:
/** 封装国际化选择图片  
 * @param {Object} self 组件中的 this  
 * @param {Object} params 配置参数  
 */  
Vue.prototype.selectImage = (self, params = {}) => {  
    let count = params.count || 1;                                   // 数量  
    let sizeType = params.sizeType || ['original', 'compressed'];            // 原图和压缩图  
    let sourceType = params.sourceType || ['album', 'camera'];       // 相册和相机  
    let success = params.success || function success(){};            // 成功回调  
    let fail = params.fail || function fail(){};                             // 失败回调  
    let option = {  
        cancel: self.$t('prompt.btn2'),            // i18n取消文字  
        buttons: [{  
                title: self.$t('prompt.imgBtn1') // i18n相机文字    
            },  
            {  
                title: self.$t('prompt.imgBtn2') // i18n相册文字    
            }  
        ]  
    };  
    if(!sourceType.includes('album')) delete option.buttons[0];  
    if(!sourceType.includes('camera')) delete option.buttons[1];  
    plus.nativeUI.actionSheet(option,  
        async (tap) => {  
            if(tap.index === 1) {  
                // 拍照  
                const cmr = plus.camera.getCamera();  
                cmr.captureImage((path) => {  
                    plus.io.getFileInfo({  
                        filePath: path,  
                        success: res => {  
                            let result = {  
                                errMsg: "chooseImage:ok",  
                                tempFilePaths: [path],  
                                tempFiles: [{  
                                    path: path,  
                                    size: res.size  
                                }]  
                            };  
                            success(result);  
                        },  
                        fail: err => fail(err)  
                    });  
                    }, (err) => {fail(err)});  
            } else if (tap.index === 2) {  
                // 从相册选择  
                plus.gallery.pick(  
                (res) => {  
                    let filesList = res.files;  
                    let tempFiles = [];  
                    for (let path of filesList) {  
                        plus.io.getFileInfo({  
                            filePath: path,  
                            success: r => {  
                                console.log(r);  
                                tempFiles.push({  
                                    path: path,  
                                    size: r.size  
                                });  
                                if(tempFiles.length === filesList.length) {  
                                    success({  
                                        errMsg: "chooseImage:ok",  
                                        tempFilePaths: filesList,  
                                        tempFiles  
                                    })  
                                }  
                            },  
                            fail: err => fail(err)  
                        });  
                    }  
                }, (err) => {fail(err)},{  
                    filter: "image",  
                    multiple: true,  
                    maximum: count,  
                    system: false,  
                });  
            }  
        });  
}
                                        
                                     
10 个回复
最佳回复
DCloud_UNI_GSQ
uni-app 内置国际化方案说明 https://ask.dcloud.net.cn/article/38821
DCloud_UNI_GSQ
感谢反馈,后续会处理
TTOOMM (作者)
谢谢,还有Picker的取消和确认
2020-02-10 15:26
3***@qq.com
最近项目也遇到选择图片的国际化问题了,希望能尽快处理,或者给出临时解决方案,谢谢。
2020-03-06 21:25
l***@thinmoo.com
处理好了?被国外用户吐槽,受不了了
2020-06-30 14:43
DCloud_UNI_GSQ
回复 l***@thinmoo.com: iOS还是安卓,具体哪里?
2020-07-01 16:51
英盟
相册选择图片国际化,有解决方案吗?
2020-08-11 09:47
Meaty
希望早点解决
2020-12-11 11:48
l***@aol.com
一年了,这个问题处理一下这么难么?就算不能用户自定义,至少根据系统语言切换一下啊?或者你好歹默认个英文行不行?
2021-02-27 16:12
3***@qq.com - 80H
顶一个,希望能尽快解决,项目中使用了,发现n多的坑,有点悔不当初
QiuXc
自己封装的一个实现选择图片弹框国际化的方法,返回的格式与 uni.chooseImage,因此可以把 uni.chooseImage 替换掉,在main.js挂到了Vue原型上:
远夏
大佬,我用你这个的话,我要怎么处理选中图片之后的逻辑呢?
2020-12-22 15:57
刀塔之妖
这个有进展吗?
我的天
TTOOMM (作者)
不清楚,我自己写了一个
2020-09-01 12:34
TTOOMM (作者)
还有一个webview的国际化问题
帖子如下:
https://ask.dcloud.net.cn/question/103786
c***@fjtjhwlkjwwgc.onexmail.com
顶一个
l***@aol.com
一年了,这个问题处理一下这么难么?就算不能用户自定义,至少根据系统语言切换一下啊?或者你好歹默认个英文行不行?
DCloud_UNI_GSQ
莫慌,国际化进度已经统一开始了
2021-03-01 14:49
1***@qq.com
回复 DCloud_UNI_GSQ: 急用
2021-03-25 10:14
DCloud_UNI_GSQ
回复 1***@qq.com: 3.1.6 alpha
2021-03-25 17:16
Sea121
我的默认是个英文的,问题是换不回来了,我需要的是中文啊啊啊啊
DCloud_UNI_GSQ
https://ask.dcloud.net.cn/article/38821
2021-05-19 15:33
1***@qq.com
1123