Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Organizing a project that uses multiple languages?

I am currently working on a project that has components in perl, .NET, C/C++, and Java. These components are inter-related, but are not tied to the same release schedule. Due to the very different build/testing environment requirements, lumping them all in to the same /bin /src /lib /etc /tests hierarchy is a bit unwieldy.

What are some good organizational hierarchies to use in source control when dealing with a project of this nature? I am currently leaning towards each language having its own branch:

repo/project1/perl/main/...

repo/project1/.NET/main/...

repo/project1/Java/main/...

How would your recommended hierarchy change if they DID have a tied release schedule?

like image 413
Dylan Cali Avatar asked Feb 02 '10 16:02

Dylan Cali


People also ask

What is multilingual project?

A multilingual project is a Lingo project that includes more than one target language. Lingo lets you add as many languages as you like to your projects, and you can add or remove them at any time. A great benefit to multilingual projects is that you can add all the languages you need to translate to a single project.

How do you implement multiple languages?

The common way of handling multiple language content is to use Gettext – a software solution created to handle translations in applications written in different programming languages. It is also available in PHP as a separate extension. Using Gettext allows you to separate the app translations from the source code.

Can you build an app with multiple languages?

There are 2 ways to create apps in multiple languages. Build multiple apps and give the user the ability to select their preferred language when they load the app or add code to automatically select the language based on the device language settings.

Can you use multiple languages on a project?

There are various ways that multiple languages can be used in one project. Some examples: You can write a DLL in, say, C, and then use that library from, say, a VB program. You could write a server program in, say C++, and have lots of different language implementations of the client.


1 Answers

I think what youve laid out is on the line. If you release the project as a whole with all components as opposed to releasing each component seperately then i might use svn:externals to differnt repo locations or entirely different repositories, then just associate the build via external with the latest compatible tagged release of a component. Or if using git then use submodules to do much the same thing.

/repo/project1
  trunk/
    svn:external .Net /repo/project1/components/.Net
    svn:external perl /repo/project1/components/perl
    svn:external Java /repo/project1/components/Java
    -- other integration code or what have you --
  tags/
  branches/
  components/
    .Net/
      trunk/
      tags/
      branches/
    Java/
      trunk/
      tags/
      branches/
    perl/
      trunk/
      tags/
      branches/

The exact structure would depend on the workflow and exactly how the components are integrated but you get the idea.

like image 105
prodigitalson Avatar answered Sep 23 '22 00:09

prodigitalson