Developing International Software, Part 1

بواسطة: edX

Overview

Developing software for one market, and shipping it internationally with a few tweaks is simply impossible. Learn how to  create “world-ready” software from expert programmers who have developed international software for some of the world’s most successful companies.

Developing international software involves far more than translating the User Interface. You must sharpen your business acumen to determine whether shipping software to a specific market is even worth the effort. You must deepen your knowledge of cultural differences so you don’t include a feature, visual, or turn of phrase that offends potential customers. You must understand that differences in language affect input methods, sorting orders, text layout, fonts, and dialog box sizes, and that countries use different currency symbols, number formats, keyboard layouts, and measurement systems--and you should internalize all of this before you write a single line of code.

In this era of rapid development and intense competition, it is tempting to focus on what’s “most important” first, leaving the rest for later; but waiting until the end of the software development cycle to start thinking about markets outside of your own is a strategy that can result in delays or embarrassing failures, costing you time and money, alienating potential customers, and damaging your brand.

In this course, programmers who have developed international software for some of the world’s most successful companies will teach you the secrets to creating a “world-ready” software design and codebase that will make shipping software to markets around the world a smoother, less expensive, and less time-consuming process. The course has three discrete sections: business considerations, design, and development.

No previous programming knowledge is necessary for Part 1. Parts 2 and 3 require an understanding of basic coding techniques.

Taught by

Nadine Kano, Daniel Goldschmidt and Björn Rettig

Developing International Software, Part 1
الذهاب الي الدورة

Developing International Software, Part 1

بواسطة: edX

  • edX
  • مجانية
  • الإنجليزية
  • متاح شهادة
  • أيام محددة
  • الجميع
  • N/A
8.1.2PHP Version781msRequest Duration2MBMemory UsageGET ar/الدورات/{slug}Route
    • Booting (487ms)
    • Application (292ms)
    • 1 x Booting (62.31%)
      486.62ms
      1 x Application (37.43%)
      292.31ms
      14 templates were rendered
      • public.courses.show (resources/views/public/courses/show.blade.php)3bladefile
        Params
        0
        course
        1
        links
        2
        config
      • public.courses.partials.breadcrumbs (resources/views/public/courses/partials/breadcrumbs.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.courses.partials.heading (resources/views/public/courses/partials/heading.blade.php)7bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        classes
      • public.courses.partials.details (resources/views/public/courses/partials/details.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.courses.partials.breadcrumbs (resources/views/public/courses/partials/breadcrumbs.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.courses.partials.heading (resources/views/public/courses/partials/heading.blade.php)7bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        classes
      • public.layouts.main (resources/views/public/layouts/main.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.layouts.partials.meta (resources/views/public/layouts/partials/meta.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.layouts.partials.navbar (resources/views/public/layouts/partials/navbar.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.auth.profile.partials.links (resources/views/public/auth/profile/partials/links.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.auth.profile.partials.link (resources/views/public/auth/profile/partials/link.blade.php)8bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        route
        7
        title
      • public.auth.profile.partials.link (resources/views/public/auth/profile/partials/link.blade.php)8bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        route
        7
        title
      • public.auth.profile.partials.link (resources/views/public/auth/profile/partials/link.blade.php)8bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        route
        7
        title
      • public.layouts.partials.flash-session (resources/views/public/layouts/partials/flash-session.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      uri
      GET ar/الدورات/{slug}
      middleware
      web, localize:ar
      controller
      App\Http\Controllers\CourseController@show
      as
      ar.courses.show
      namespace
      prefix
      /ar
      where
      file
      app/Http/Controllers/CourseController.php:17-35
      7 statements were executed11.04ms
      • select * from `courses` where `slug_ar` = 'developing-international-software,-part-1' limit 1
        8.32ms/app/Http/Controllers/CourseController.php:20corspedia
        Metadata
        Bindings
        • 0. developing-international-software,-part-1
        Backtrace
        • 17. /app/Http/Controllers/CourseController.php:20
        • 18. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 19. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 20. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • update `courses` set `visitors` = `visitors` + 1, `courses`.`updated_at` = '2025-07-28 01:15:34' where `id` = 2459
        1.57ms/app/Http/Controllers/CourseController.php:21corspedia
        Metadata
        Bindings
        • 0. 2025-07-28 01:15:34
        • 1. 2459
        Backtrace
        • 17. /app/Http/Controllers/CourseController.php:21
        • 18. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 19. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 20. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select `id`, `name_en`, `name_ar`, `topic_id`, `slug_en`, `slug_ar` from `subjects` where `subjects`.`id` in (77)
        240μs/app/Http/Controllers/CourseController.php:23corspedia
        Metadata
        Backtrace
        • 20. /app/Http/Controllers/CourseController.php:23
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 22. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 23. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 24. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select `id`, `name_en`, `name_ar`, `slug_en`, `slug_ar` from `topics` where `topics`.`id` in (1)
        230μs/app/Http/Controllers/CourseController.php:23corspedia
        Metadata
        Backtrace
        • 25. /app/Http/Controllers/CourseController.php:23
        • 26. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 27. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 28. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 29. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select * from `institutions` where `institutions`.`id` in (62) and `institutions`.`deleted_at` is null
        230μs/app/Http/Controllers/CourseController.php:23corspedia
        Metadata
        Backtrace
        • 20. /app/Http/Controllers/CourseController.php:23
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 22. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 23. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 24. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select * from `providers` where `providers`.`id` in (1) and `providers`.`deleted_at` is null
        200μs/app/Http/Controllers/CourseController.php:23corspedia
        Metadata
        Backtrace
        • 20. /app/Http/Controllers/CourseController.php:23
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 22. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 23. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 24. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select * from `html_files` where `html_files`.`id` = 2450 limit 1
        250μs/app/Models/Course.php:84corspedia
        Metadata
        Bindings
        • 0. 2450
        Backtrace
        • 21. /app/Models/Course.php:84
        • 28. view::public.courses.show:29
        • 30. /vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php:125
        • 31. /vendor/laravel/framework/src/Illuminate/View/Engines/PhpEngine.php:58
        • 32. /vendor/laravel/framework/src/Illuminate/View/Engines/CompilerEngine.php:72
      App\Models\HtmlFile
      1
      App\Models\Provider
      1
      App\Models\Institution
      1
      App\Models\Topic
      1
      App\Models\Subject
      1
      App\Models\Course
      1
        _token
        RP6BjoLA9R1JC0evl4cmhbv09aQkBUzxkKYU1Ecb
        locale
        ar
        _previous
        array:1 [ "url" => "https://www.corspedia.com/ar/%D8%A7%D9%84%D8%AF%D9%88%D8%B1%D8%A7%D8%AA/develo...
        _flash
        array:2 [ "old" => [] "new" => [] ]
        PHPDEBUGBAR_STACK_DATA
        []
        path_info
        /ar/%D8%A7%D9%84%D8%AF%D9%88%D8%B1%D8%A7%D8%AA/developing-international-software,-part-1
        status_code
        200
        
        status_text
        OK
        format
        html
        content_type
        text/html; charset=UTF-8
        request_query
        []
        
        request_request
        []
        
        request_headers
        0 of 0
        array:24 [ "cf-ipcountry" => array:1 [ 0 => "US" ] "cf-connecting-ip" => array:1 [ 0 => "216.73.216.121" ] "cdn-loop" => array:1 [ 0 => "cloudflare; loops=1" ] "x-forwarded-proto" => array:1 [ 0 => "https" ] "x-forwarded-for" => array:1 [ 0 => "216.73.216.121" ] "sec-fetch-site" => array:1 [ 0 => "none" ] "accept" => array:1 [ 0 => "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7" ] "user-agent" => array:1 [ 0 => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)" ] "upgrade-insecure-requests" => array:1 [ 0 => "1" ] "sec-ch-ua-platform" => array:1 [ 0 => ""Windows"" ] "sec-ch-ua-mobile" => array:1 [ 0 => "?0" ] "sec-ch-ua" => array:1 [ 0 => ""Chromium";v="130", "HeadlessChrome";v="130", "Not?A_Brand";v="99"" ] "cache-control" => array:1 [ 0 => "no-cache" ] "pragma" => array:1 [ 0 => "no-cache" ] "sec-fetch-dest" => array:1 [ 0 => "document" ] "cf-ray" => array:1 [ 0 => "966086af5cd7ac81-YYZ" ] "accept-encoding" => array:1 [ 0 => "gzip, br" ] "priority" => array:1 [ 0 => "u=0, i" ] "sec-fetch-user" => array:1 [ 0 => "?1" ] "sec-fetch-mode" => array:1 [ 0 => "navigate" ] "cf-visitor" => array:1 [ 0 => "{"scheme":"https"}" ] "host" => array:1 [ 0 => "www.corspedia.com" ] "content-length" => array:1 [ 0 => "" ] "content-type" => array:1 [ 0 => "" ] ]
        request_server
        0 of 0
        array:50 [ "USER" => "www-data" "HOME" => "/var/www" "HTTP_CF_IPCOUNTRY" => "US" "HTTP_CF_CONNECTING_IP" => "216.73.216.121" "HTTP_CDN_LOOP" => "cloudflare; loops=1" "HTTP_X_FORWARDED_PROTO" => "https" "HTTP_X_FORWARDED_FOR" => "216.73.216.121" "HTTP_SEC_FETCH_SITE" => "none" "HTTP_ACCEPT" => "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7" "HTTP_USER_AGENT" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)" "HTTP_UPGRADE_INSECURE_REQUESTS" => "1" "HTTP_SEC_CH_UA_PLATFORM" => ""Windows"" "HTTP_SEC_CH_UA_MOBILE" => "?0" "HTTP_SEC_CH_UA" => ""Chromium";v="130", "HeadlessChrome";v="130", "Not?A_Brand";v="99"" "HTTP_CACHE_CONTROL" => "no-cache" "HTTP_PRAGMA" => "no-cache" "HTTP_SEC_FETCH_DEST" => "document" "HTTP_CF_RAY" => "966086af5cd7ac81-YYZ" "HTTP_ACCEPT_ENCODING" => "gzip, br" "HTTP_PRIORITY" => "u=0, i" "HTTP_SEC_FETCH_USER" => "?1" "HTTP_SEC_FETCH_MODE" => "navigate" "HTTP_CF_VISITOR" => "{"scheme":"https"}" "HTTP_HOST" => "www.corspedia.com" "REDIRECT_STATUS" => "200" "SERVER_NAME" => "corspedia.com" "SERVER_PORT" => "443" "SERVER_ADDR" => "141.95.147.152" "REMOTE_USER" => "" "REMOTE_PORT" => "45826" "REMOTE_ADDR" => "172.69.130.208" "SERVER_SOFTWARE" => "nginx/1.18.0" "GATEWAY_INTERFACE" => "CGI/1.1" "HTTPS" => "on" "REQUEST_SCHEME" => "https" "SERVER_PROTOCOL" => "HTTP/2.0" "DOCUMENT_ROOT" => "/var/www/corspedia/public" "DOCUMENT_URI" => "/index.php" "REQUEST_URI" => "/ar/%D8%A7%D9%84%D8%AF%D9%88%D8%B1%D8%A7%D8%AA/developing-international-software,-part-1" "SCRIPT_NAME" => "/index.php" "CONTENT_LENGTH" => "" "CONTENT_TYPE" => "" "REQUEST_METHOD" => "GET" "QUERY_STRING" => "" "SCRIPT_FILENAME" => "/var/www/corspedia/public/index.php" "PATH_INFO" => "" "FCGI_ROLE" => "RESPONDER" "PHP_SELF" => "/index.php" "REQUEST_TIME_FLOAT" => 1753665333.9009 "REQUEST_TIME" => 1753665333 ]
        request_cookies
        []
        
        response_headers
        0 of 0
        array:5 [ "content-type" => array:1 [ 0 => "text/html; charset=UTF-8" ] "cache-control" => array:1 [ 0 => "no-cache, private" ] "date" => array:1 [ 0 => "Mon, 28 Jul 2025 01:15:34 GMT" ] "set-cookie" => array:2 [ 0 => "XSRF-TOKEN=eyJpdiI6ImoxbU16d3hnZDNkSmxHQnZKWVdBbmc9PSIsInZhbHVlIjoibGo5Y3hlaEVLak02M2hQSXhyVzNHc3B1UVVCbUZWYjE4bk91MTRheHpxdjNyMmtiQnY1QXlScHIxcVE0TWwwTjR4U1drRnV2d3M0YVNFRnlqNUdmTkE3NnF3MWlkUmR5dmpLUzRISmIwZlZpc243ajUyV09pMExjVkxjdFNlM1MiLCJtYWMiOiI4YTMzNjE3YjllYTkwZjJkYWRkNWQ1MzRjZTJhOGFmZmY0NzJjN2IyOTYyYWNmZGIxYzJhMmU5YWY3MDBhNzE4IiwidGFnIjoiIn0%3D; expires=Mon, 28 Jul 2025 03:15:34 GMT; Max-Age=7200; path=/; samesite=laxXSRF-TOKEN=eyJpdiI6ImoxbU16d3hnZDNkSmxHQnZKWVdBbmc9PSIsInZhbHVlIjoibGo5Y3hlaEVLak02M2hQSXhyVzNHc3B1UVVCbUZWYjE4bk91MTRheHpxdjNyMmtiQnY1QXlScHIxcVE0TWwwTjR4U1drR" 1 => "laravel_session=eyJpdiI6Inp5MURoelBFaWRyYlUxV0FkUDVPUEE9PSIsInZhbHVlIjoiK2hya0ZCZUFiZmFJcGowR1R3NFlpbGFCOGNub3B4OUh3WGZ2Skt6M2hMYjJDVVBpQ1NuQUpueGxzemZBVnpENWE3czVkRVJMNlZlR2g2cXZTVW5CTnpGVWRycDd0Qml6NmpHOUtHWmVsNkQ2VExBU0VGLzU4V1pUUnZ5V3N5ZXciLCJtYWMiOiI2M2I5ZTJjOGEwZWJjYTU5NjYwYmVlYWI5YjdjYjJiYzNjZWFiNzJmYzEwODI4ODJlMjc4ZThiNTJkNWE1MTdmIiwidGFnIjoiIn0%3D; expires=Mon, 28 Jul 2025 03:15:34 GMT; Max-Age=7200; path=/; httponly; samesite=laxlaravel_session=eyJpdiI6Inp5MURoelBFaWRyYlUxV0FkUDVPUEE9PSIsInZhbHVlIjoiK2hya0ZCZUFiZmFJcGowR1R3NFlpbGFCOGNub3B4OUh3WGZ2Skt6M2hMYjJDVVBpQ1NuQUpueGxzemZBVnpENWE3" ] "Set-Cookie" => array:2 [ 0 => "XSRF-TOKEN=eyJpdiI6ImoxbU16d3hnZDNkSmxHQnZKWVdBbmc9PSIsInZhbHVlIjoibGo5Y3hlaEVLak02M2hQSXhyVzNHc3B1UVVCbUZWYjE4bk91MTRheHpxdjNyMmtiQnY1QXlScHIxcVE0TWwwTjR4U1drRnV2d3M0YVNFRnlqNUdmTkE3NnF3MWlkUmR5dmpLUzRISmIwZlZpc243ajUyV09pMExjVkxjdFNlM1MiLCJtYWMiOiI4YTMzNjE3YjllYTkwZjJkYWRkNWQ1MzRjZTJhOGFmZmY0NzJjN2IyOTYyYWNmZGIxYzJhMmU5YWY3MDBhNzE4IiwidGFnIjoiIn0%3D; expires=Mon, 28-Jul-2025 03:15:34 GMT; path=/XSRF-TOKEN=eyJpdiI6ImoxbU16d3hnZDNkSmxHQnZKWVdBbmc9PSIsInZhbHVlIjoibGo5Y3hlaEVLak02M2hQSXhyVzNHc3B1UVVCbUZWYjE4bk91MTRheHpxdjNyMmtiQnY1QXlScHIxcVE0TWwwTjR4U1drR" 1 => "laravel_session=eyJpdiI6Inp5MURoelBFaWRyYlUxV0FkUDVPUEE9PSIsInZhbHVlIjoiK2hya0ZCZUFiZmFJcGowR1R3NFlpbGFCOGNub3B4OUh3WGZ2Skt6M2hMYjJDVVBpQ1NuQUpueGxzemZBVnpENWE3czVkRVJMNlZlR2g2cXZTVW5CTnpGVWRycDd0Qml6NmpHOUtHWmVsNkQ2VExBU0VGLzU4V1pUUnZ5V3N5ZXciLCJtYWMiOiI2M2I5ZTJjOGEwZWJjYTU5NjYwYmVlYWI5YjdjYjJiYzNjZWFiNzJmYzEwODI4ODJlMjc4ZThiNTJkNWE1MTdmIiwidGFnIjoiIn0%3D; expires=Mon, 28-Jul-2025 03:15:34 GMT; path=/; httponlylaravel_session=eyJpdiI6Inp5MURoelBFaWRyYlUxV0FkUDVPUEE9PSIsInZhbHVlIjoiK2hya0ZCZUFiZmFJcGowR1R3NFlpbGFCOGNub3B4OUh3WGZ2Skt6M2hMYjJDVVBpQ1NuQUpueGxzemZBVnpENWE3" ] ]
        session_attributes
        0 of 0
        array:5 [ "_token" => "RP6BjoLA9R1JC0evl4cmhbv09aQkBUzxkKYU1Ecb" "locale" => "ar" "_previous" => array:1 [ "url" => "https://www.corspedia.com/ar/%D8%A7%D9%84%D8%AF%D9%88%D8%B1%D8%A7%D8%AA/developing-international-software,-part-1" ] "_flash" => array:2 [ "old" => [] "new" => [] ] "PHPDEBUGBAR_STACK_DATA" => [] ]