Σελίδα 1 από 2

Greeklish Subs - κωδικοποιήσεις

ΔημοσίευσηΔημοσιεύτηκε: 15 Αύγ 2008, 13:21
από BlackSlash13
Πηγα διακοπες με τον φορητο και τον εξωτερικο σκληρο δισκο γεμάτο με divX συμπιεσμένες ταινίες που τις εχω αγοράσει νομιμα για να μην κουβαλάω τα αυθεντικα DVD που μπορει και να χαλάσουν στις διακοπές. Ο βλάκας όμως, στο encoding ξεχασα να ενσωματώσω τους υπότιτλους ....

Και μαντεψτε ; Ειχα 4 λειτουργικα πανω (λινουξ) και ειχα ξεχασει να βαλω ελληνικη υποστηριξη. Με αποτελεσμα τα αρχεια srt των υποτιτλων να μην εμφανιζονται (δεν ελεγε να δουλεξει το ατοιμο το encoding ) με αποτελεσμα να βλεπω μονο τελιες και ερωτηματικα. Ετσι, αφου δεν ειχα ιντερνετ επρεπε να βρω μια λυση. Η λυση ηταν να κατσω να γραψω ολο το αρχειο με τους υποτιτλους απο τα ελληνικα στα greeklish. Πολυ χρονοβορο ομως... Οποτε εφτιαξα ενα προγραμμα να το κανει αυτο αντι για μενα. Δεν ειναι τιποτα σπουδαιο απλα το παραθετω ως ιδεα. πχ βαζεις το αρχειο srt σε ενα φακελο μαζι με τον source, κανεις compile. Στην αρχη σου ζηταει ενα ονομα, οπου δινει το ονομα του αρχειο που εχεις στον φακελο μαζι με τον κωδικο, πχ SexAndTheCity.srt και στην συνεχεια δινεις ενα ονομα για το καινουριο αρχειο με τα greeklish πχ SexGreek.srt. και voila

Κώδικας: Επιλογή όλων
#include <fstream>
#include <iostream>
#include <string.h>
#include <cstdlib>
using namespace std;

int main()
{
    char phrasi[100];
    char Source[80], Target[80];
    cout << "Greek2Lish Converter (by BlackSlash)\n" << endl;
    cout << "Dose to onoma tou arxeiou iso-8859-7: ";
    cin >> Source;
    cout << "Dose to onoma  tou arxeiou Greeklish: ";
    cin >> Target;

    ifstream fin(Source);
    ofstream fout(Target);
    cout << "Convertion started . . .";
    char ch;
    while( fin.get(ch) )
    {
   if(int(ch) == -31 || int(ch) == -36 ) {
      fout << "a";
   } else if( int(ch) == -63 || int(ch) == -74) {
      fout << "A";
   } else if ( int(ch) == -30) {
      fout << "b";
   } else if ( int(ch) == -62 ) {
      fout << "B";
   } else if ( int(ch) == -61 ) {
      fout << "G";
   } else if ( int(ch) == -29 ) {
      fout << "g";
   } else if ( int(ch) == -28 ) {
      fout << "d";
   } else if ( int(ch) == -60 ) {
      fout << "D";
   } else if ( int(ch) == -27 || int(ch) == -35 ) {
      fout << "e";
   } else if ( int(ch) == -59 || int(ch) == -72 ) {
      fout << "E";
   } else if ( int(ch) == -26 ) {
      fout << "z";
   } else if ( int(ch) == -58 ) {
      fout << "Z";
   } else if ( int(ch) == -25 || int(ch) == -34 || int(ch) == -23 || int(ch) == -33) {
      fout << "i";
   } else if ( int(ch) == -57 || int(ch) == -71 || int(ch) == -55 || int(ch) == -70) {
      fout << "I";
   } else if ( int(ch) == -24 || int(ch) == -56 ) {
      fout << "th";
   } else if ( int(ch) == -22 ) {
      fout << "k";
   } else if ( int(ch) == -54 ) {
      fout << "K";
   } else if ( int(ch) == -21 ) {
      fout << "l";
   } else if ( int(ch) == -53 ) {
      fout << "L";
   } else if ( int(ch) == -20 ) {
      fout << "m";
   } else if ( int(ch) == -52 ) {
      fout << "M";
   } else if ( int(ch) == -19 ) {
      fout << "n";
   } else if ( int(ch) == -51 ) {
      fout << "N";
   } else if ( int(ch) == -18 ) {
      fout << "ks";
   } else if ( int(ch) == -50 ) {
      fout << "Ks";
   } else if ( int(ch) == -17 || int(ch) == -4 ) {
      fout << "o";
   } else if ( int(ch) == -49 || int(ch) == -68 ) {
      fout << "O";
   } else if ( int(ch) == -16 ) {
      fout << "p";
   } else if ( int(ch) == -48 ) {
      fout << "P";
   } else if ( int(ch) == -15 ) {
      fout << "r";
   } else if ( int(ch) == -47 ) {
      fout << "R";
   } else if ( int(ch) == -13 || int(ch) == -14 ) {
      fout << "s";
   } else if ( int(ch) == -45 ) {
      fout << "S";
   } else if ( int(ch) == -12 ) {
      fout << "t";
   } else if ( int(ch) == -44 ) {
      fout << "T";
   } else if ( int(ch) == -11 || int(ch) == -3 ) {
      fout << "u";
   } else if ( int(ch) ==  -43 || int(ch) == -66 ) {
      fout << "Y";
   } else if ( int(ch) == -10 ) {
      fout << "f";
   } else if ( int(ch) == -42 ) {
      fout << "F";
   } else if ( int(ch) == -9 ) {
      fout << "x";
   } else if ( int(ch) == -41 ) {
      fout << "X";
   } else if ( int(ch) == -8 ) {
      fout << "ps";
   } else if ( int(ch) == -40 ) {
      fout << "Ps";
   } else if ( int(ch) == -7 || int(ch) == -2 ) {
      fout << "o";
   } else if ( int(ch) == -39 || int(ch) == -65 ) {
      fout << "O";
   } else {
      fout << ch;
   }
   
    }
    cout <<"Job done.***\n";
   fin.close();
    return 0;
}

Re: Greeklish Subs

ΔημοσίευσηΔημοσιεύτηκε: 15 Αύγ 2008, 14:04
από Dimitris
Πολύ καλή ιδέα. Ερώτηση το ubuntu υποστηρίζει να γράφουμε ελληνικά ακόμη και σε γραμμή εντολών. Αν έβαζες ελληνικούς χαρακτήρες στα fout δε θα λειτουργούσε; Σε C (με printf) που το είχα δοκιμάσει σε τερματικό τα ελληνικά λειτουργούσαν.

Re: Greeklish Subs

ΔημοσίευσηΔημοσιεύτηκε: 15 Αύγ 2008, 14:54
από BlackSlash13
Ισως να λειτουργουσε. Δεν το σκεφτηκα αυτο :D

Re: Greeklish Subs

ΔημοσίευσηΔημοσιεύτηκε: 16 Αύγ 2008, 19:59
από simosx
Ο λόγος που δε δουλεύουν τα αρχεία υπότιτλων είναι ότι στις περισσότερες φορές (όλες) έχουν για τα ελληνικά την κωδικοποίηση windows-1253 (8-bit). Έτσι, πρέπει να ρυθμίσεις το πρόγραμμα που παίζει τις ταινίες ότι η κωδικοποίηση των υποτίτλων είναι αυτή, ή διαφορετικά να αλλάξεις την κωδικοποίηση των υποτίτλων σε UTF-8 (βασική κωδικοποίηση του Ubuntu).

Ένας τρόπος για να αλλάξεις την κωδικοποίηση των υποτίτλων είναι με

Κώδικας: Επιλογή όλων
iconv -f windows-1253 -t UTF-8 < old-subtitles.srt > new-subtitles.srt


Τώρα, οι υπότιτλοι παίζουν με κάθε πρόγραμμα στο Ubuntu.

Αυτά είναι βασικά στοιχεία του Ubuntu, και δεν απαιτούν εγκατάσταση της ελληνικής υποστήριξης (για μένα όμως είναι καλό να βάζουμε ούτως ή άλλως την ελληνική υποστήριξη).

Γενικά, είναι εφικτό για κάποιον να μετατρέψει ένα κείμενο σε greeklish (=transliteration, που είναι και ο σωστός όρος), με χρήση κάτι σαν το

Κώδικας: Επιλογή όλων
iconv -f windows-1253 -t ASCII//TRANSLIT < old-subtitles.srt > new-subtitles.srt


Ωστόσο, για κάποιο λόγο δε δουλεύει. Μια πρόχειρη αναζήτηση στο Google εμφανίζει άλλους με το ίδιο πρόβλημα, ωστόσο δε βρήκα λύση.

Σε κάθε περίπτωση, είναι καλό που έφτιαξες πρόγραμμα για την επίλυση του προβλήματος.

Re: Greeklish Subs

ΔημοσίευσηΔημοσιεύτηκε: 16 Αύγ 2008, 20:24
από linuxman
Αν είναι για τους υπότιτλους υπάρχει απλή λύση gedit είναι φανταστικό editor με πολλές λειτουργίες , πάρα πολλές , ούτε τερματικό και ούτε κόπος . :) :) :)

Εικόνα

Εικόνα

Εικόνα

Re: Greeklish Subs

ΔημοσίευσηΔημοσιεύτηκε: 19 Αύγ 2008, 16:44
από BlackSlash13
simosx έγραψε:Ο λόγος που δε δουλεύουν τα αρχεία υπότιτλων είναι ότι στις περισσότερες φορές (όλες) έχουν για τα ελληνικά την κωδικοποίηση windows-1253 (8-bit). Έτσι, πρέπει να ρυθμίσεις το πρόγραμμα που παίζει τις ταινίες ότι η κωδικοποίηση των υποτίτλων είναι αυτή, ή διαφορετικά να αλλάξεις την κωδικοποίηση των υποτίτλων σε UTF-8 (βασική κωδικοποίηση του Ubuntu).

Ένας τρόπος για να αλλάξεις την κωδικοποίηση των υποτίτλων είναι με

Κώδικας: Επιλογή όλων
iconv -f windows-1253 -t UTF-8 < old-subtitles.srt > new-subtitles.srt


Τώρα, οι υπότιτλοι παίζουν με κάθε πρόγραμμα στο Ubuntu.

Αυτά είναι βασικά στοιχεία του Ubuntu, και δεν απαιτούν εγκατάσταση της ελληνικής υποστήριξης (για μένα όμως είναι καλό να βάζουμε ούτως ή άλλως την ελληνική υποστήριξη).

Γενικά, είναι εφικτό για κάποιον να μετατρέψει ένα κείμενο σε greeklish (=transliteration, που είναι και ο σωστός όρος), με χρήση κάτι σαν το

Κώδικας: Επιλογή όλων
iconv -f windows-1253 -t ASCII//TRANSLIT < old-subtitles.srt > new-subtitles.srt


Ωστόσο, για κάποιο λόγο δε δουλεύει. Μια πρόχειρη αναζήτηση στο Google εμφανίζει άλλους με το ίδιο πρόβλημα, ωστόσο δε βρήκα λύση.

Σε κάθε περίπτωση, είναι καλό που έφτιαξες πρόγραμμα για την επίλυση του προβλήματος.


Οντως. Το δοκιμασα αυτο που λες και δεν παιζει. Ευχαριστω.
Καλη συνεχεια στις μεταφράσεις του gnome.

Re: Greeklish Subs

ΔημοσίευσηΔημοσιεύτηκε: 28 Αύγ 2008, 13:34
από aggelis6
linuxman έγραψε:Αν είναι για τους υπότιτλους υπάρχει απλή λύση gedit είναι φανταστικό editor με πολλές λειτουργίες , πάρα πολλές , ούτε τερματικό και ούτε κόπος . :) :) :)

Εικόνα

Εικόνα

Εικόνα



Συμφωνώ και επαυξάνω...Λειτουργεί τέλεια...

Re: Greeklish Subs

ΔημοσίευσηΔημοσιεύτηκε: 07 Σεπ 2008, 15:28
από xlv1000
linuxman έγραψε:Αν είναι για τους υπότιτλους υπάρχει απλή λύση gedit είναι φανταστικό editor με πολλές λειτουργίες , πάρα πολλές , ούτε τερματικό και ούτε κόπος . :) :) :)

Εικόνα

Εικόνα

Εικόνα


Εχω το ίδιο προβλημα με τους υποτιτλους αλλα δεν με βοήθησαν οι εικόνες.Συγκεκριμένα στην πρώτη εικόνα έχεις υπογραμμίσει με κόκκινο στο παράθυρο "κωδικοποιήσεις χαρακτήρων" Πού το βρήκες αυτό το παραθυρο?Εχω κολήσει ... :oops:
ευχαριστώ για το χρόνο σου

Re: Greeklish Subs

ΔημοσίευσηΔημοσιεύτηκε: 07 Σεπ 2008, 16:05
από linuxman
Πας στο άνοιγμα αρχείου και όπως βλέπεις στην εικόνα έχει προσθήκη η αφαίρεση απο κει και κάνεις προσθήκη η αφαίρεση
απλός όταν θα πας να επιλέξεις το αρχείο υποτίτλων θα πρέπει να επιλέξεις το αρχείο έχοντας επιλέξει iso8859-7
μετά στην αποθήκευση επιλέγουμε το utf-8 και είναι οκ .
1.Εικόνα

2.Εικόνα

3.Εικόνα

4.Εικόνα

Re: Greeklish Subs

ΔημοσίευσηΔημοσιεύτηκε: 07 Σεπ 2008, 16:11
από cyberpython
Για τις κωδικοποιήσεις 2 είναι οι τρόποι :

1) Ο δύσκολος και πιο χρονοβόρος (αλλά οι υπότιτλοι παίζουν σε όλους τους players)
Ανοίγουμε το gedit. Πατάμε το κουμπί άνοιγμα και βρίσκουμε το αρχείο υπότιτλων που μας ενδιαφέρει. Πρίν κάνουμε κλικ στο κουμπί άνοιγμα επιλέγουμε στο πεδίο κωδικοποίηση το "Greek (Windows 1253)"
Αφού το αρχείο ανοίξει (και βλέπουμε το κείμενο σωστά), πατάμε στο Μενού "Αρχείο -> Αποθήκευση Ως..." και πρίν το αποθηκεύσουμε αλλάζουμε της κωδικοποίηση σε UTF8.

2)Εγκαθιστούμε το VLC και πάμε "Settings -> Preferences"
Πάμε στο "Input / Codecs -> Other Codecs -> Subtitles" και αλλάζουμε το subtitles text encoding σε "CP1253"
Κάνουμε κλικ στο Save.
(Αν δεν έχουμε ήχο -και χρησιμοποιούμε ALSA- ξαναπηγαίνουμε στο "Settings -> Preferences" και στο "Audio -> Output modules" τσεκάρουμε το "Advance options" και απιλέγουμε το "ALSA audio output")