Craft 3 Multi Language Setup Okay, I am here because I would like to have a site in the following structure:


https://site.com  (default english version)
https://site.com/ko (korean)
https://site.com/pt (portuguese)


I would like to use ONE uploads folder to store all of the assets for all 3 languages(plus any additional languages added after), use all of the same templates, and use all of the same css and js files.

My current directory structure is the craft 3 default(I used the cli installer, which is great). Here is the important pieces of what my directory looks like:

-templates
- web
   - dist
      - js
      - css
   - uploads
   - ko
   - pt


Lets say I have the following templates:

- home.html
- newsroom.html
- whitepapers.html
- help.html


I would expect to be able to visit each in the following manner:

(Home)
- https://site.com
- https:///site.com/ko
- https://site.com/pt

(Newsroom)
- https://site.com/newsroom
- https:///site.com/ko/newsroom
- https://site.com/pt/newsroom

...etc hopefully you get the picture.


Is this at all possible with Craft 3? I keep running into issues where each languages site is trying to pull in the uploads or css/js assets from within their respective folders:



Also, here is the sites config in general.php:

'dev' =&gt; [
        'siteUrl' =&gt; [
          'default' =&gt; 'https://site.test',
          'korean' =&gt; 'https://site.test/ko',
          'brazil' =&gt; 'https://site.test/pt'
        ],
        'devMode' =&gt; true,
 ]


SOLUTION
For anyone visiting this in the future, here are the updates to my config that solved the problem. Please refer to this after you have read Robin and Jolle's answers, they are both very helpful.

'dev' =&gt; [
        'siteUrl' =&gt; [
          'default' =&gt; 'http://site.test',
          'korean' =&gt; 'http://site.test/ko',
          'brazil' =&gt; 'http://site.test/bz'
        ],
        'aliases' =&gt; [
            'basePath' =&gt; '/Users/dzuz/localhost/site/web',
            'baseUrl'  =&gt; 'http://site.test/',
        ],
        'devMode' =&gt; true,
    ],
First of all you should remove all "language" subfolders from your web directory because your web server will route directly in those instead of your default web/index.php. Craft will determinate the CurrentSite depending on your url not on the location of the file.

Second: make sure to insert an array with aliases in your config/general.php 
I'll show a "complex" solution for multiple asset sources for multiple sites. If your site shares the same resources you'll just need the first array element but I want to show the concept

$publicPath = realpath(dirname(__DIR__) . '/web');
// ....
'aliases' =&gt; [
    'assetPath1'    =&gt; $publicPath . DIRECTORY_SEPARATOR . 'assets' . DIRECTORY_SEPARATOR . 'folder1' . DIRECTORY_SEPARATOR,
    'assetPath2'    =&gt; $publicPath . DIRECTORY_SEPARATOR . 'assets' . DIRECTORY_SEPARATOR . 'folder2' . DIRECTORY_SEPARATOR,
    //....
]


You should never access those files with 

&lt;script src="`{{ siteUrl }}/assets/folder1/jquery.js`"&gt;


Because this will use the current site url and append the structure. Therefore you have the alias function

&lt;script src="`{{ alias('assetPath1') }}/assets/folder1/jquery.js`"&gt;


Now you can do some fancy stuff like

&lt;script src="`{{ alias('assetPath' ~ currentSite.id) }}/assets/folder1/jquery.js`"&gt;


Or whatever identifier you like to access your asset files dynamically.