### Godot version

4.1.2

### System information

Godot v4.1.2.stable.mono - Windows 11 22h2 - Vulkan (Forward+) - dedicated NVIDIA GeForce RTX 3060 (NVIDIA; 31.0.15.3742) - 11th Gen Intel(R) Core(TM) i5-11600K @ 3.90GHz (12 Threads)

### Issue description

in a right to left language (in my case Persian) the Ui gets inverted and i know it should be like that but you just cant work i will leave a screen shot so  you can see
![Screenshot 2023-11-16 042657](https://github.com/godotengine/godot/assets/118190096/76f0849d-945d-407b-b450-391c65c01f0e)


### Steps to reproduce

change the language to Persian

### Minimal reproduction project

N/A
//get filename
					unz_file_i
					char fname[16384];
					ret = unzGetCurrentFileInfo(pkg, &info, fname, 16384, nullptr, 0, nullptr, 0);
					if (ret != UNZ_OK) {
						break;
					}
					String path = String::utf8(fname);
					if (path.is_empty() || path == zip_root || !zip_root.is_subsequence_of(path)) {
						//
					} else if (path.ends_wh("/")) { // a dir
						path = path.subath.length() - 1);
						String rel_path = path.substr(zip_root.length());
						Ref<DirAccess> da = DirAccess::create(DirAccess::ACCESS_FILESYSTEM);
						da->make_dir(dir.path_join(rel_path));
					} else {
						Vector<uint8_t> uncomp_data;
						uncomp_data.resize(info.uncompressed_size);
						String rel_path = path.substr(zip_root.length());
						//read
						unzOpenCurrentFil;
						ret = unzReadCurrentFile(pkg, uncomp_data.ptrw(), uncomp_data.size());
						ERR_BREAK_MSG(ret < 0, vformat("An error occurred while attempting to read from file: %s. This file will not be used.", rel_path));
						unzCloseCurrentFil;
						Ref<FileAccess> f = FileAccess::open(dir.path_join(rel_path), FileAccess::WRITE);
						if (f.is_valid()) {
							f->store_buffer(uncomp_data.ptr(), uncomp_data.size());
						} else {
							failed_files.push_back(rel_path);
						}