PDA

View Full Version : Localization of Ext



jack.slocum
13 Mar 2007, 7:32 AM
In the latest rev under the experimental folder is ext-lang-en.js. This is an unfinished first pass at pulling in all the prototyped strings and config options in Ext that can be localized. I have to admit, I got side-tracked and didn't make it very far.

If anyone has already went through and put together a full list (or wants to :)), please let me know. We are planning on having some preconfigured i18n files in the 1.0 distribution and any help with this would be very much appreciated!

mystix
13 Mar 2007, 7:58 AM
i don't mind helping with japanese. just let me know what to do (like, how should i go about saving asian characters in a text file?).

rodiniz
13 Mar 2007, 9:05 AM
I dont know where are other messages, if any
I have just sent you pt-br localization.

tabo
13 Mar 2007, 9:37 AM
Here is a (utf-8 encoded) spanish translation: http://static.tabo.aureal.com.pe/pub/tmp/ext-lang-es.js

mdelanno
13 Mar 2007, 11:33 AM
Here is a french version. I've added the grid header context menu and the comboBox loading text.

Version 2: Added Ext.form.datePicker.format = 'd/m/y'
Version 1: First version



/*
* Ext - JS Library 1.0 Alpha 3 - Rev 4
* Copyright(c) 2006-2007, Jack Slocum.
* Translated by Maxence Delannoy
* http://www.extjs.com/license.txt
*/

Ext.UpdateManager.defaults.indicatorText = '<div class="loading-indicator">Chargement en cours...</div>';

Date.monthNames =
["Janvier",
"Février",
"Mars",
"Avril",
"Mai",
"Juin",
"Juillet",
"Août",
"Septembre",
"Octobre",
"Novembre",
"Décembre"];

Date.dayNames =
["Dimanche",
"Lundi",
"Mardi",
"Mercredi",
"Jeudi",
"Vendredi",
"Samedi"];

Ext.apply(Ext.grid.GridView.prototype, {
sortAscText: "Tri ascendant",
sortDescText: "Tri descendant",
lockText: "Figer la colonne",
unlockText: "Libérer la colonne",
columnsText: "Colonnes"
});

Ext.apply(Ext.DatePicker.prototype, {
todayText : "Aujourd'hui",
todayTip : "{0} (barre espace)",
minText : "Cette date se situe avant la date minimum.",
maxText : "Cette date se situe après la date maximum.",
format : "d/m/y",
disabledDaysText : "",
disabledDatesText : "",
monthNames : Date.monthNames,
dayNames : Date.dayNames,
nextText: "Mois suivant (Ctrl + Droite)",
prevText: "Mois précédent (Ctrl + Gauche)",
monthYearText: "Choisissez un mois (Ctrl + Haut/bas pour changer d'année)",
startDay: 1 // Week start on Monday
});

Ext.apply(Ext.form.DateField.prototype, {
format: "d/m/y"
});

Ext.MessageBox.buttonText = {
ok : "OK",
cancel : "Annuler",
yes : "Oui",
no : "Non"
};

Ext.apply(Ext.PagingToolbar.prototype, {
beforePageText : "Page",
afterPageText : "sur {0}",
firstText : "1ère page",
prevText : "Page précédente",
nextText : "Page suivante",
lastText : "Dernière page",
refreshText : "Actualiser"
});

Ext.TabPanelItem.prototype.closeText = "Fermer cet onglet";

Ext.apply(Ext.form.ComboBox.prototype, {
loadingText: "Chargement..."
});

mdelanno
13 Mar 2007, 11:36 AM
Don't forget to set the start day for the week. For example, in France the week start on Monday, so we need to set Ext.DatePicker.prototype.startDay to 1.

Belgabor
13 Mar 2007, 12:26 PM
German (de_DE):
(official first day of the week is Monday/Montag as far as I know)


/*
* Ext - JS Library 1.0 Alpha 3 - Rev 4
* Copyright(c) 2006-2007, Jack Slocum.
*
* http://www.extjs.com/license.txt
*/


Ext.UpdateManager.defaults.indicatorText = '<div class="loading-indicator">Wird geladen...</div>';

Date.monthNames =
["Januar",
"Februar",
"März",
"April",
"Mai",
"Juni",
"Juli",
"August",
"September",
"Oktober",
"November",
"Dezember"];

Date.dayNames =
["Sonntag",
"Montag",
"Dienstag",
"Mittwoch",
"Donnerstag",
"Freitag",
"Samstag"];

Ext.apply(Ext.grid.GridView.prototype, {
sortAscText: "Aufsteigend ordnen",
sortDescText: "Absteigend ordnen",
lockText: "Spalte sperren",
unlockText: "Spalte entsperren",
columnsText: "Spalte"
});

Ext.apply(Ext.DatePicker.prototype, {
todayText : "Heute",
todayTip : "{0} (Leertaste)",
minText : "Dieses Datum ist vor dem Minimaldatum",
maxText : "Dieses Datum ist nach dem Maximaldatum",
format : "d.m.y",
disabledDaysText : "",
disabledDatesText : "",
monthNames : Date.monthNames,
dayNames : Date.dayNames,
nextText: 'Nächster Monat (Steuerung+Rechts)',
prevText: 'Vorheriger Monat (Steuerung+Links)',
monthYearText: 'Monat auswählen (Steuerung+Hoch/Runter zur Jahresauswahl)',
startDay: 1 // Week start on Monday
});

Ext.MessageBox.buttonText = {
ok : "OK",
cancel : "Abbrechen",
yes : "Ja",
no : "Nein"
};

Ext.apply(Ext.PagingToolbar.prototype, {
beforePageText : "Seite",
afterPageText : "von {0}",
firstText : "Erste Seite",
prevText : "Vorherige Seite",
nextText : "Nächste Seite",
lastText : "Letzte Seite",
refreshText : "Aktualisieren"
});

Ext.TabPanelItem.prototype.closeText = "Karteireiter schließen";


Edit: Added grid stuff and startDay.

fponticelli
13 Mar 2007, 1:34 PM
Here comes Italian.



/*
* Ext - JS Library 1.0 Alpha 3 - Rev 4
* Copyright(c) 2006-2007, Jack Slocum.
* Translated by Maxence Delannoy
* http://www.extjs.com/license.txt
*/

Ext.UpdateManager.defaults.indicatorText = '<div class="loading-indicator">Caricamento in corso...</div>';

Date.monthNames =
["gennaio",
"febbraio",
"marzo",
"aprile",
"maggio",
"giugno",
"luglio",
"agosto",
"settembre",
"ottobre",
"novembre",
"dicembre"];

Date.dayNames =
["domenica",
"lunedì",
"martedì",
"mercoledì",
"giovedì",
"venerdì",
"sabato"];

Ext.apply(Ext.grid.GridView.prototype, {
sortAscText: "Ordinamento crescente",
sortDescText: "Ordinamento decrescente",
lockText: "Bloccare la colonna",
unlockText: "Sbloccare la colonna",
columnsText: "Colonne"
});

Ext.apply(Ext.DatePicker.prototype, {
todayText : "Oggi",
todayTip : "{0} (barra spaziatrice)",
minText : "Questa data è precedente alla data minima.",
maxText : "Questa data è successiva alla data massima.",
format : "d/m/y",
disabledDaysText : "",
disabledDatesText : "",
monthNames : Date.monthNames,
dayNames : Date.dayNames,
nextText: "Mese successivo (Ctrl + Destra)",
prevText: "Mese precedente (Ctrl + Sinistra)",
monthYearText: "Selezionare un mese (Ctrl + Sù/Giù per cambiare anno)",
startDay: 1 // Week start on Monday
});

Ext.MessageBox.buttonText = {
ok : "OK",
cancel : "Annullare",
yes : "Sì",
no : "No"
};

Ext.apply(Ext.PagingToolbar.prototype, {
beforePageText : "Pagina",
afterPageText : "di {0}",
firstText : "Prima pagina",
prevText : "Pagina precedente",
nextText : "Pagina successiva",
lastText : "Ultima pagina",
refreshText : "Aggiorna"
});

Ext.TabPanelItem.prototype.closeText = "Chiudere questa scheda";

Ext.apply(Ext.form.ComboBox.prototype, {
loadingText: "Caricamento in corso..."
});

Arikon
13 Mar 2007, 2:13 PM
Russian in UTF-8 encoding


/*
* Ext - JS Library 1.0 Alpha 3 - Rev 4
* Copyright(c) 2006-2007, Jack Slocum.
*
* http://www.extjs.com/license.txt
*/

Ext.UpdateManager.defaults.indicatorText = '<div class="loading-indicator">Идет загрузка...</div>';

Date.monthNames =
["Январь",
"Февраль",
"Март",
"Апрель",
"Май",
"Июнь",
"Июль",
"Август",
"Сентябрь",
"Октябрь",
"Ноябрь",
"Декабрь"];

Date.dayNames =
["Воскресенье",
"Понедельник",
"Вторник",
"Среда",
"Четверг",
"Пятница",
"Суббота"];

Ext.apply(Ext.grid.GridView.prototype, {
sortAscText: "Сортировать по возрастанию",
sortDescText: "Сортировать по убыванию",
lockText: "Заблокировать столбец",
unlockText: "Разблокировать столбец",
columnsText: "Столбцы"
});

Ext.apply(Ext.DatePicker.prototype, {
todayText : "Сегодня",
todayTip : "{0} (Пробел)",
minText : "Эта дата раньше минимальной разрешенной даты",
maxText : "Эта дата позже максимальной разрешенной даты",
format : "d.m.y",
disabledDaysText : "",
disabledDatesText : "",
monthNames : Date.monthNames,
dayNames : Date.dayNames,
nextText: 'Следующий месяц (Control+Вправо)',
prevText: 'Предыдущий месяц (Control+Влево)',
monthYearText: 'Выбрать месяц (Control+Вверх/Вниз для выбора года)',
startDay: 1 // Week start on Monday
});

Ext.MessageBox.buttonText = {
ok : "OK",
cancel : "Отмена",
yes : "Да",
no : "Нет"
};

Ext.apply(Ext.PagingToolbar.prototype, {
beforePageText : "Страница",
afterPageText : "из {0}",
firstText : "Первая страница",
prevText : "Предыдущая страница",
nextText : "Следующая страница",
lastText : "Последняя страница",
refreshText : "Обновить"
});

Ext.TabPanelItem.prototype.closeText = "Закрыть вкладку";

Ext.apply(Ext.form.ComboBox.prototype, {
loadingText: "Загрузка..."
});


Say, if you'll have troubles with encoding, I'll put file to http server.

brian.moeskau
13 Mar 2007, 7:54 PM
This is awesome guys! Great to see translations coming in so quickly.

Jack, you might consider versioning the filenames somehow, as the English file will inevitably get ahead of the others as you add new features, and as translators come and go, some versions may lag behind others. It will make maintenance easier if there's a simple way for people to see which files need updating after releases. Great work everyone!

Brian

brian.moeskau
13 Mar 2007, 7:59 PM
One other thing, ultimately, you'll probably want to move to the 2-part I18N country/culture designation (which I believe is an ISO standard) in the filenames. For example, within English, there are "en-US," "en-GB" (Great Britain), "en-AU" (Australia), etc. that can have slight differences (like week start day for example).

colorless
14 Mar 2007, 12:24 AM
Chinese in UTF-8 encoding



/*

* Ext - JS Library 1.0 Alpha 3 - Rev 4

* Copyright(c) 2006-2007, Jack Slocum.

*

* http://www.extjs.com/license.txt

*/




Ext.UpdateManager.defaults.indicatorText = '<div class="loading-indicator">正在加载...</div>';

Date.monthNames =
["一月",
"二月",
"三月",
"四月",
"五月",
"六月",
"七月",
"八月",
"九月",
"十月",
"十一月",
"十二月"];

Date.dayNames =
["星期日",
"星期一",
"星期二",
"星期三",
"星期四",
"星期五",
"星期六"];

Ext.apply(Ext.DatePicker.prototype, {
todayText : "今天",
todayTip : "{0} (空格)",
minText : "必须在最小日期的后面",
maxText : "必须在最大日期的前面",
format : "y-m-d",
disabledDaysText : "",
disabledDatesText : "",
monthNames : Date.monthNames,
dayNames : Date.dayNames,
nextText: '下一月 (Control+Right)',
prevText: '上一月 (Control+Left)',
monthYearText: '选择月份 (Control+Up/Down 加减年份)'
});

Ext.MessageBox.buttonText = {
ok : "确定",
cancel : "取消",
yes : "是",
no : "否"
};

Ext.apply(Ext.PagingToolbar.prototype, {
beforePageText : "页",
afterPageText : "of {0}",
firstText : "第一页",
prevText : "上一页",
nextText : "下一页",
lastText : "最后页",
refreshText : "刷新"
});

Ext.TabPanelItem.prototype.closeText = "关闭这个tab";

Skeleton
14 Mar 2007, 12:52 AM
Here is the Turkish one:

http://www.in-spiretech.com/pub/ext-lang-tr.js


/*
* Ext - JS Library 1.0 Alpha 3 - Rev 4
* Copyright(c) 2006-2007, Jack Slocum.
* Translated by Hüseyin Tüfekçilerli
* http://www.extjs.com/license.txt
*/


Ext.UpdateManager.defaults.indicatorText = '<div class="loading-indicator">Yükleniyor...</div>';

Date.monthNames =
["Ocak",
"Şubat",
"Mart",
"Nisan",
"Mayıs",
"Haziran",
"Temmuz",
"Ağustos",
"Eylül",
"Ekim",
"Kasım",
"Aralık"];

Date.dayNames =
["Pazar",
"Pazartesi",
"Salı",
"Çarşamba",
"Perşembe",
"Cuma",
"Cumartesi"];

Ext.apply(Ext.DatePicker.prototype, {
todayText : "Bugün",
todayTip : "{0} (Boşluk)",
minText : "Bu tarih minimum tarihten önce",
maxText : "Bu tarih maximum tarihten sonra",
format : "d/m/y",
disabledDaysText : "",
disabledDatesText : "",
monthNames : Date.monthNames,
dayNames : Date.dayNames,
nextText: 'Sonraki Ay (Control+Sağ)',
prevText: 'Önceki Ay (Control+Sol)',
monthYearText: 'Bir ay seçiniz (Yılları değiştirmek için Control+Yukarı/Aşağı)'
});

Ext.MessageBox.buttonText = {
ok : "Tamam",
cancel : "İptal",
yes : "Evet",
no : "Hayır"
};

Ext.apply(Ext.PagingToolbar.prototype, {
beforePageText : "Sayfa",
afterPageText : " / {0}",
firstText : "İlk Sayfa",
prevText : "Önceki Sayfa",
nextText : "Sonraki Sayfa",
lastText : "Son Sayfa",
refreshText : "Yenile"
});

Ext.TabPanelItem.prototype.closeText = "Bu sekmeyi kapat";

thell
14 Mar 2007, 12:52 AM
Here is Swedish



/*
* Ext - JS Library 1.0 Alpha 3 - Rev 4
* Copyright(c) 2006-2007, Jack Slocum.
*
* http://www.extjs.com/license.txt
*/


Ext.UpdateManager.defaults.indicatorText = '<div class="loading-indicator">Laddar...</div>';

Date.monthNames =
["Januari",
"Februari",
"Mars",
"April",
"Maj",
"Juni",
"Juli",
"Augusti",
"September",
"Oktober",
"November",
"December"];

Date.dayNames =
["Söndag",
"Måndag",
"Tisdag",
"Onsdag",
"Torsdag",
"Fredag",
"Lördag"];

Ext.apply(Ext.DatePicker.prototype, {
todayText : "Idag",
todayTip : "{0} (Blanksteg)",
minText : "Det här datumet är före det minsta giltiga datumet",
maxText : "Det här datumet är efter det största giltiga datumet",
format : "y-m-d",
disabledDaysText : "",
disabledDatesText : "",
monthNames : Date.monthNames,
dayNames : Date.dayNames,
nextText: 'Nästa månad (Control+Höger)',
prevText: 'Förra månaden (Control+Vänster)',
monthYearText: 'Välj en månad (Control+Upp/Ner för att byta år)',
startDay: 1 // Week start on Monday
});

Ext.MessageBox.buttonText = {
ok : "OK",
cancel : "Avbryt",
yes : "Ja",
no : "Nej"
};

Ext.apply(Ext.PagingToolbar.prototype, {
beforePageText : "Sida",
afterPageText : "av {0}",
firstText : "Första Sidan",
prevText : "Förra Sidan",
nextText : "Nästa Sida",
lastText : "Sista Sidan",
refreshText : "Uppdatera"
});

Ext.TabPanelItem.prototype.closeText = "Stäng denna flik";

mnugter
14 Mar 2007, 1:43 AM
And dutch (nl_NL)



/*
* Ext - JS Library 1.0 Alpha 3 - Rev 4
* Copyright(c) 2006-2007, Jack Slocum.
*
* http://www.extjs.com/license.txt
*/


Ext.UpdateManager.defaults.indicatorText = '<div class="loading-indicator">Bezig met laden...</div>';

Date.monthNames =
["Januari",
"Februari",
"Maart",
"April",
"Mei",
"Juni",
"Juli",
"Augustus",
"September",
"Oktober",
"November",
"December"];

Date.dayNames =
["Zondag",
"Maandag",
"Dinsdag",
"Woensdag",
"Donderdag",
"Vrijdag",
"Zaterdag"];

Ext.apply(Ext.DatePicker.prototype, {
todayText : "Vandaag",
todayTip : "{0} (Spatie)",
minText : "Deze datum ligt voor de minimum datum.",
maxText : "Deze datum ligt na de maximum datum.",
format : "d/m/y",
disabledDaysText : "",
disabledDatesText : "",
monthNames : Date.monthNames,
dayNames : Date.dayNames,
nextText: 'Volgende maand (Control+Rechts)',
prevText: 'Vorige maand (Control+Links)',
monthYearText: 'Kies een maand (Control+Omhoog/Beneden om door jaren te bladen)'
});

Ext.MessageBox.buttonText = {
ok : "OK",
cancel : "Annuleren",
yes : "Ja",
no : "Nee"
};

Ext.apply(Ext.PagingToolbar.prototype, {
beforePageText : "Pagina",
afterPageText : "van {0}",
firstText : "Eerste pagina",
prevText : "Vorige pagina",
nextText : "Volgende pagina",
lastText : "Laatste pagina",
refreshText : "Vernieuwen"
});

Ext.TabPanelItem.prototype.closeText = "Dit tabblad sluiten";

brian.moeskau
14 Mar 2007, 3:35 AM
Anyone care to take Jack up on the need to scan through the Ext source and compile the complete list of text that requires localization? It's great that everyone is translating, but there will be an additional pass required once the base language file is completed. The sooner we can finalize the base file the better. Any takers?

mystix
14 Mar 2007, 7:05 AM
Anyone care to take Jack up on the need to scan through the Ext source and compile the complete list of text that requires localization? It's great that everyone is translating, but there will be an additional pass required once the base language file is completed. The sooner we can finalize the base file the better. Any takers?

hi jack / brian, scanned all of ext-all-debug.js [a3r4] and here's what i came up with:
note:
- numbers in [] indicate line numbers (e.g. [251] = line 251)
- [112-113] means the stuff after it occurs on lines 112-113
- ??? after line numbers (e.g. [4941???]) mean "i'm not sure if this line requires i18n. please don't clobber me over the head."

throw statements:
[215] throw 'Illegal insertion point -> "' + where + '"';
[251] throw 'Illegal insertion point -> "' + where + '"';
[881] throw 'Error parsing selector, parsing failed at "' + q + '"';
[909] throw p + " is not a valid selector";
[1221] throw 'Event does not exist: "' + eventName + '".';
[1473] throw "Error listening for " + ename + '. Element ' + element + ' doesn\'t exist.';
[2863] throw "Element.alignTo with an element that doesn't exist";
[2879] throw "Element.alignTo with an invalid alignment " + p;
[4563] throw "Invalid selector";
[9876] throw {message: "JsonReader.read: Json object not found"};
[9924] throw {message: "XmlReader.read: XML Document not available"};
[17177] throw 'Illegal filter type, must be string or regex';
[20048] throw 'Layout region "'+target+'" not supported.';

xxxxText (e.g. minText, maxText etc):
[4841] indicatorText : '<div class="loading-indicator">Loading...</div>'
[11085] emptyText : "",
[11956] todayText : "Today",
[11957] todayTip : "{0} (Spacebar)",
[11960] minText : "This date is before the minimum date",
[11961] maxText : "This date is after the maximum date",
[11964] disabledDaysText : "",
[11966] disabledDatesText : "",
[11970] nextText: 'Next Month (Control+Right)',
[11971] prevText: 'Previous Month (Control+Left)',
[11972] monthYearText: 'Choose a month (Control+Up/Down to move years)'
[12459] closeText : "Close this tab"
[13416] beforePageText : "Page",
[13418] afterPageText : "of {0}",
[13420] firstText : "First Page",
[13422] prevText : "Previous Page",
[13424] nextText : "Next Page",
[13426] lastText : "Last Page",
[13428] refreshText : "Refresh"
[15798] blankText:'A name is required',
[18419] invalidText : "The value in this field is invalid",
[18775] minLengthText : "The minimum length for this field is {0}",
[18776] maxLengthText : "The maximum length for this field is {0}",
[18778] blankText : "This field is required",
[18781] regexText : "",
[18782] emptyText : null,
[19013] minText : "The minimum value for this field is {0}",
[19014] maxText : "The maximum value for this field is {0}",
[19015] nanText : "{0} is not a valid number"
[19141] disabledDaysText : "Disabled",
[19143] disabledDatesText : "Disabled",
[19146] minText : "The date in this field must be after {0}",
[19147] maxText : "The date in this field must be before {0}",
[19148] invalidText : "{0} is not a valid date - it must be in the format {1}"
[19220] loadingText: 'Loading...',
[19229] valueNotFoundText : undefined,
[19728] 'emailText' : 'This field should be an e-mail address in the format "user@domain.com"',
[19734] 'urlText' : 'This field should be a URL in the format "http:/'+'/www.domain.com"',
[19740] 'alphaText' : 'This field should only contain letters and _',
[19746] 'alphanumText' : 'This field should only contain letters, numbers and _',
[21920] Ext.grid.Grid.prototype.ddText = "%0 selected row(s)";
[23379] sortAscText : "Sort Ascending",
[23380] sortDescText : "Sort Descending",
[23381] lockText : "Lock Column",
[23382] unlockText : "Unlock Column",
[23383] columnsText : "Columns"
[24593] nameText : 'Name',
[24594] valueText : 'Value',
[24784] nameText: 'Style',

xxxxMsg (e.g. displayMsg etc):
[13238] displayMsg : 'Displaying {0} - {1} of {2}',
[13239] emptyMsg : 'No data to display',

xxxxTip (e.g. splitTip etc):
[20725]splitTip : "Drag to resize.",
[20726] collapsibleSplitTip : "Drag to resize. Double click to hide.",

xxxxNames (e.g. monthNames etc):
[5225-5237] Date.monthNames = Date.monthNames =
["January",
"February",
"March",
"April",
"May",
"June",
"July",
"August",
"September",
"October",
"November",
"December"];
[5240-5247] Date.dayNames =
["Sunday",
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday",
"Saturday"];
[11968] monthNames : Date.monthNames,
[11969] dayNames : Date.dayNames,

formats:
[4939???] return "(this.getHours() < 12 ? 'am' : 'pm') + ";
[4941???] return "(this.getHours() < 12 ? 'AM' : 'PM') + ";
[5034???] s:"(?:Sun|Mon|Tue|Wed|Thu|Fri|Sat)"};
[5047???] s:"(?:st|nd|rd|th)"};
[5067???] s:"(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)"};
[5101???] s:"(AM|PM)"};
[5967???] return v.dateFormat(format || "m/d/Y");
[11962] format : "m/d/y",
[19139] format : "m/d/y",
[24595] dateFormat : 'm/j/Y',

stuff in Ext.debug:
[24709] title: 'Ext Debug Console &amp; Inspector',
[24722] title: 'Debug Console'
[24728] title: 'DOM Inspector'
[24741] title:'Script Console',
[24761???] Ext.debug.dump(rt === undefined? '(no return)' : rt);
[24767???] Ext.debug.dump(rt === undefined? '(no return)' : rt);
[24771] text: 'Clear',
[24780???] sctb.add('-', trap, 'Trap Errors');
[24790] {title: '(No element selected)'}));
[24797] text: 'Clear',
[24831] text: 'Inspect',
[24858] text: 'Highlight Selection',
[24872] text: 'Refresh Children',
[24883] text: 'Collapse All',
[24906] text: 'DOM Attributes',
[24909] new Ext.menu.CheckItem({id:'dom', text:'DOM Attributes', checked: true, group:'xdb-styles'}),
[24910] new Ext.menu.CheckItem({id:'styles', text:'CSS Properties', group:'xdb-styles'})
[24918] swap.setText(styles ? 'CSS Properties' : 'DOM Attributes');
[24926] text: 'Add',
[24929] Ext.MessageBox.prompt('Add Property', 'Property Name:', function(btn, v){
[24941] text: 'Computed Styles',
[25144] Ext.debug.log('Unknown return type');
[25174???] var v = String.format("{0} ms", t-Ext._timers[name]);
[25177] Ext.debug.log('Timer ' + (name == "def" ? v : name + ": " + v));

button text:
[15464] ok : "OK",
[15465] cancel : "Cancel",
[15466] yes : "Yes",
[15467] no : "No"

miscellaneous stuff:
[1693-1738???] Ext.EventObjectImpl.prototype = {...} (i'm thinking keyboards from with extra asian keys???)
[5205-5220???] Date.prototype.getSuffix = function() {...} (only english has "st", "nd" etc suffixes??)
[5299-5311???] Date.MILLI = "ms"; (anyone have any idea what these are for???)
...
Date.YEAR = "y";
[9088] return String(s).toUpperCase().replace(this.stripTagsRE, ""); (toUpperCase() only makes sense for english???)
[9093] return String(s).toUpperCase(); (ditto line 9088)
[11788???] this.update(this.activeDate.add("mo", -1));
[11792???] this.update(this.activeDate.add("mo", 1));
[11796???] this.update(this.activeDate.add("y", -1));
[11800???] this.update(this.activeDate.add("y", 1));

That's as exhaustive as i could get. Now i need someone to double check this
Now for a shower, a bite, a drink and some good old Anime... :lol:

[EDIT]
found 2 bugs [a3r4] while searching for strings to i18n-ize.
they are in ext-all-debug.js:
[line 18734] vtypeText is not defined anywhere at all
[line 25098] '<pre><xmp>> {msg}</xmp></pre>'); --> extra '>' after <xmp> tag

ximo
14 Mar 2007, 7:35 AM
Here's some Norwegian Bokmål (nb) for you. Værsågod, I'll be happy to translate more.



/*
* Ext - JS Library 1.0 Alpha 3 - Rev 4
* Copyright(c) 2006-2007, Jack Slocum.
*
* http://www.extjs.com/license.txt
*/


Ext.UpdateManager.defaults.indicatorText = '<div class="loading-indicator">Laster...</div>';

Date.monthNames =
["Januar",
"Februar",
"Mars",
"April",
"Mai",
"Juni",
"Juli",
"August",
"September",
"Oktober",
"November",
"Desember"];

Date.dayNames =
["Søndag",
"Mandag",
"Tirsdag",
"Onsdag",
"Torsdag",
"Fredag",
"Lørdag"];

Ext.apply(Ext.DatePicker.prototype, {
todayText : "I dag",
todayTip : "{0} (Mellomrom)",
minText : "Denne datoen er lengre tilbake i tid enn det som er tillatt",
maxText : "Denne datoen er lengre fram i tid enn det som er tillatt",
format : "d.m.y",
disabledDaysText : "",
disabledDatesText : "",
monthNames : Date.monthNames,
dayNames : Date.dayNames,
nextText: 'Neste måned (Kontroll+Høyre)',
prevText: 'Forrige måned (Kontroll+Venstre)',
monthYearText: 'Velg en måned (Kontroll+Opp/Ned for å velge år)',
startDay: 1 // First day of week is Monday
});

Ext.MessageBox.buttonText = {
ok : "OK",
cancel : "Avbryt",
yes : "Ja",
no : "Nei"
};

Ext.apply(Ext.PagingToolbar.prototype, {
beforePageText : "Side",
afterPageText : "av {0}",
firstText : "Første side",
prevText : "Forrige side",
nextText : "Neste side",
lastText : "Siste side",
refreshText : "Oppdater"
});

Ext.TabPanelItem.prototype.closeText = "Lukk denne fanen";

JohnF
14 Mar 2007, 1:36 PM
And a danish for Denmark (da):


/*
* Ext - JS Library 1.0 Alpha 3 - Rev 4
* Copyright(c) 2006-2007, Jack Slocum.
*
* http://www.extjs.com/license.txt
*/


Ext.UpdateManager.defaults.indicatorText = '<div class="loading-indicator">Henter...</div>';

Date.monthNames =
["Januar",
"Februar",
"Marts",
"April",
"Maj",
"Juni",
"Juli",
"August",
"September",
"Oktober",
"November",
"December"];

Date.dayNames =
["Søndag",
"Mandag",
"Tirsdag",
"Onsdag",
"Torsdag",
"Fredag",
"Lørdag"];

Ext.apply(Ext.DatePicker.prototype, {
todayText : "Idag",
todayTip : "{0} (Mellemrum)",
minText : "Denne dato er før tidligste dato",
maxText : "Denne dato er efter seneste dato",
format : "d/m/y",
disabledDaysText : "",
disabledDatesText : "",
monthNames : Date.monthNames,
dayNames : Date.dayNames,
nextText: 'Næste måned (Ctrl+højre pil)',
prevText: 'Forrige måned (Ctrl+venstre pil)',
monthYearText: 'Vælg en måned (Ctrl+op/ned pil for årsskift)'
});

Ext.MessageBox.buttonText = {
ok : "OK",
cancel : "Afbryd",
yes : "Ja",
no : "Nej"
};

Ext.apply(Ext.PagingToolbar.prototype, {
beforePageText : "Side",
afterPageText : "af {0}",
firstText : "Første side",
prevText : "Forrige side",
nextText : "Næste side",
lastText : "Sidste side",
refreshText : "Opfrisk"
});

Ext.TabPanelItem.prototype.closeText = "Luk denne fane";

hata1234
14 Mar 2007, 7:48 PM
Good Job Jack...
Here is Traditional Chinese version


/*
* Ext - JS Library 1.0 Alpha 3 - Rev 4
* Copyright(c) 2006-2007, Jack Slocum.
*
* http://www.extjs.com/license.txt
*/


Ext.UpdateManager.defaults.indicatorText = '<div class="loading-indicator">讀取中...</div>';

Date.monthNames =
["一月",
"二月",
"三月",
"四月",
"五月",
"六月",
"七月",
"八月",
"九月",
"十月",
"十一月",
"十二月"];

Date.dayNames =
["日",
"一",
"二",
"三",
"四",
"五",
"六"];

Ext.apply(Ext.DatePicker.prototype, {
todayText : "今天",
todayTip : "{0} (空白鍵)",
minText : "日期必須大於最小容許日期",
maxText : "日期必須小於最大容許日期",
format : "d/m/y",
disabledDaysText : "",
disabledDatesText : "",
monthNames : Date.monthNames,
dayNames : Date.dayNames,
nextText: '下個月 (Ctrl+右方向鍵)',
prevText: '上個月 (Ctrl+左方向鍵)',
monthYearText: '選擇月份 (Ctrl+上/下方向鍵選擇年份)'
});

Ext.MessageBox.buttonText = {
ok : "確定",
cancel : "取消",
yes : "是",
no : "否"
};

Ext.apply(Ext.PagingToolbar.prototype, {
beforePageText : "第",
afterPageText : "頁,共{0}頁",
firstText : "第一頁",
prevText : "上一頁",
nextText : "下一頁",
lastText : "最後頁",
refreshText : "重新整理"
});

Ext.TabPanelItem.prototype.closeText = "關閉此標籤";

mystix
16 Mar 2007, 6:55 AM
bump. agree with Animal. this place is swamped with help requests (even i am guilty of that :oops:). it might be a good idea to create an Ext 1.0 Alpha help forum and rename this the Ext 1.0 Alpha Development / Bug forum.

tof
16 Mar 2007, 7:13 AM
I am volonteer to translate (and maintain translation) of Ext in french.
What would be useful is a full complete exemple with all widgets in action, to valid translation results.

francescotorres
16 Mar 2007, 6:39 PM
/*
* Ext - JS Library 1.0 Alpha 3 - Rev 4
* Copyright(c) 2006-2007, Jack Slocum.
* Translated by Francesco Torres
* http://www.extjs.com/license.txt
*/

Ext.UpdateManager.defaults.indicatorText = '<div class="loading-indicator">Carregando...</div>';

Date.monthNames =
["Janeiro",
"Fevereiro",
"Março",
"Abril",
"Maio",
"Junho",
"Julho",
"Agosto",
"Setembro",
"Outubro",
"Novembro",
"Dezembro"];

Date.dayNames =
["Domingo",
"Segunda",
"Terça",
"Quarta",
"Quinta",
"Sexta",
"Sábado"];

Ext.apply(Ext.grid.GridView.prototype, {
sortAscText: "Crescente",
sortDescText: "Decrescente",
lockText: "Travar coluna",
unlockText: "Liberar coluna",
columnsText: "Colunas"
});

Ext.apply(Ext.DatePicker.prototype, {
todayText : "Hoje",
todayTip : "{0} (baera de espaço)",
minText : "Esta data está antes da data mínima.",
maxText : "Esta data está depois da data máxima.",
format : "d/m/y",
disabledDaysText : "",
disabledDatesText : "",
monthNames : Date.monthNames,
dayNames : Date.dayNames,
nextText: "Mês seguinte (Ctrl + Direita)",
prevText: "Mês anterior(Ctrl + Esquerda)",
monthYearText: "Escolha o mês (Ctrl + Acima/Abaixo para altera o ano)",
startDay: 1 // Week start on Monday
});

Ext.apply(Ext.form.DateField.prototype, {
format: "d/m/y"
});

Ext.MessageBox.buttonText = {
ok : "OK",
cancel : "Cancelar",
yes : "Sim",
no : "Não"
};

Ext.apply(Ext.PagingToolbar.prototype, {
beforePageText : "Página",
afterPageText : "de {0}",
firstText : "Primeira",
prevText : "Anterior",
nextText : "Próxima",
lastText : "Última",
refreshText : "Atualizar"
});

Ext.TabPanelItem.prototype.closeText = "Fechar";

Ext.apply(Ext.form.ComboBox.prototype, {
loadingText: "Carregando..."
});

Frank
16 Mar 2007, 8:14 PM
Here's Simply Chinese:


/*
* Ext - JS Library 1.0 Alpha 3 - Rev 4
* Copyright(c) 2006-2007, Jack Slocum.
*
* http://www.extjs.com/license.txt
*/


Ext.UpdateManager.defaults.indicatorText = '<div class="loading-indicator">加载中...</div>';

Date.monthNames =
["一月",
"二月",
"三月",
"四月",
"五月",
"六月",
"七月",
"八月",
"九月",
"十月",
"十一月",
"十二月"];

Date.dayNames =
["星期日",
"星期一",
"星期二",
"星期三",
"星期四",
"星期五",
"星期六"];

Ext.apply(Ext.DatePicker.prototype, {
todayText : "当天",
todayTip : "{0} (空白键)",
minText : "日期过早",
maxText : "日期过晚",
format : "m/d/y",
disabledDaysText : "",
disabledDatesText : "",
monthNames : Date.monthNames,
dayNames : Date.dayNames,
nextText: '下个月(Ctrl+右)',
prevText: '上个月 (Ctrl+左)',
monthYearText: '选择月份(Ctrl+上/下 选择年份)'
});

Ext.MessageBox.buttonText = {
ok : "确认",
cancel : "取消",
yes : "是",
no : "否"
};

Ext.apply(Ext.PagingToolbar.prototype, {
beforePageText : "第",
afterPageText : "页 共{0}页",
firstText : "首页",
prevText : "前一页",
nextText : "后一页",
lastText : "尾页",
refreshText : "刷新"
});

Ext.TabPanelItem.prototype.closeText = "关闭此标签";[/code]

tof
17 Mar 2007, 2:09 AM
Here's french (both utf8 and iso8859) :

http://www.drasill.net/ext/ext-lang-fr-iso8859-15.js
http://www.drasill.net/ext/ext-lang-fr-utf8.js

jack.slocum
17 Mar 2007, 4:26 AM
Thanks everyone. I will post the full list for translation after I go through mystix's list (thank you!).

When we get the full list together in the js file, can I ask that everyone email me their translated version so I don't have to deal with encoding issues cut-n-pasting from the forums? :)

tyama
17 Mar 2007, 5:39 AM
Here is Japanese
(ext-lang-ja.js)



Ext.UpdateManager.defaults.indicatorText = '<div class="loading-indicator">読み込み中...</div>';

Date.monthNames =
["1月",
"2月",
"3月",
"4月",
"5月",
"6月",
"7月",
"8月",
"9月",
"10月",
"11月",
"12月"];

Date.dayNames =
["日",
"月",
"火",
"水",
"木",
"金",
"土"];

Ext.apply(Ext.DatePicker.prototype, {
todayText : "今日",
todayTip : "{0} (スペースキー)",
minText : "選択した日付は最小値以下です。",
maxText : "選択した日付は最大値以上です。",
format : "Y/m/d",
disabledDaysText : "",
disabledDatesText : "",
monthNames : Date.monthNames,
dayNames : Date.dayNames,
nextText: '次へ (Control+右)',
prevText: '前へ (Control+左)',
monthYearText: '月選択 (Control+上/下で年移動)'
});

Ext.MessageBox.buttonText = {
ok : "OK",
cancel : "キャンセル",
yes : "はい",
no : "いいえ"
};

Ext.apply(Ext.PagingToolbar.prototype, {
beforePageText : "ページ",
afterPageText : "/ {0}",
firstText : "最初のページ",
prevText : "前のページ",
nextText : "次のページ",
lastText : "最後のページ",
refreshText : "更新"
});

Ext.TabPanelItem.prototype.closeText = "このタブを閉じる";


:)

vbert
21 Mar 2007, 2:15 AM
Poland, encoding utf-8:

http://vbert.gildia.info/_res/ext-lang-pl.js



/*
* Ext - JS Library 1.0 Alpha 3 - Rev 4
* Copyright(c) 2006-2007, Jack Slocum.
*
* http://www.extjs.com/license.txt
*
* Language: pl
* Encoding: utf-8
*/


Ext.UpdateManager.defaults.indicatorText = '<div class="loading-indicator">Wczytywanie danych...</div>';

Date.monthNames =
["Styczeń",
"Luty",
"Marzec",
"Kwiecień",
"Maj",
"Czerwiec",
"Lipiec",
"Sierpień",
"Wrzesień",
"Październik",
"Listopad",
"Grudzień"];

Date.dayNames =
["Niedziela",
"Poniedziałek",
"Wtorek",
"Środa",
"Czwartek",
"Piątek",
"Sobota"];

Ext.apply(Ext.DatePicker.prototype, {
todayText : "Dzisiaj",
todayTip : "{0} (Spacja)",
minText : "Data jest wcześniejsza od daty minimalnej",
maxText : "Data jest późniejsza od daty maksymalnej",
format : "Y-m-d",
disabledDaysText : "",
disabledDatesText : "",
monthNames : Date.monthNames,
dayNames : Date.dayNames,
nextText: 'Następny miesiąc (Control+StrzałkaWPrawo)',
prevText: 'Poprzedni miesiąc (Control+StrzałkaWLewo)',
monthYearText: 'Wybierz miesiąc (Control+Up/Down aby zmienić rok)'
});

Ext.MessageBox.buttonText = {
ok : "OK",
cancel : "Anuluj",
yes : "Tak",
no : "Nie"
};

Ext.apply(Ext.PagingToolbar.prototype, {
beforePageText : "Strona",
afterPageText : "z {0}",
firstText : "Pierwsza strona",
prevText : "Poprzednia strona",
nextText : "Następna strona",
lastText : "Ostatnia strona",
refreshText : "Odśwież"
});

Ext.TabPanelItem.prototype.closeText = "Zamknij zakładkę";

basem_y2k
7 Oct 2008, 2:33 PM
WOW..!!
great work you guys..
may i'll think about adding an arabic version

ocheneson
13 Oct 2008, 10:06 PM
Hello,


I have created a tool to localize files.

http://www.myl10n.net/iL10Nz/

I have created an account, you can log using extjs/extjs

At the moment, I have created a project for the french version. I have written a parser to parse ext-lang-en.js

When you want to have the localised file, you need to rebuild the file and download it.

I have integrated a chat system so you can chat with the online users, you can also register your own account.

Please let me know what you think and if this would useful

Thanks
Olivier

tequilatime
15 Oct 2008, 4:37 AM
...
formats:
[4939???] return "(this.getHours() < 12 ? 'am' : 'pm') + ";
[4941???] return "(this.getHours() < 12 ? 'AM' : 'PM') + ";
[5034???] s:"(?:Sun|Mon|Tue|Wed|Thu|Fri|Sat)"};
[5047???] s:"(?:st|nd|rd|th)"};
[5067???] s:"(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)"};
[5101???] s:"(AM|PM)"};
[5967???] return v.dateFormat(format || "m/d/Y");
[11962] format : "m/d/y",
[19139] format : "m/d/y",
[24595] dateFormat : 'm/j/Y',
...

Hello Friends,
Has there been any follow-up/progress in regards to this post. I am currently attempting to localise (localize for the US readers) to the Welsh language (cy-GB). Several obstacles I am encountering are due to the fact that the Date object/class has things like am and pm indicators hard-coded, as well as (incorrectly) assuming that short day names will always be the first 3 characters of the full dayname.

It would be nice if:
a. Date object had amIndicator (default to 'am') and pmIndicator (default to 'pm') properties that I could override to 'yb' and 'yp' respectively (Welsh) - would also need to remove any hard-coded 'am' and 'pm' strings in the format properties, to utilise the new values I have set.
b. Date object needs dayNamesShort and monthNamesShort (defaulting to Date.dayNames.substring(0, 3) and Date.monthNames.substring(0, 3)) so that I can override in Welsh. The problem is that in Welsh daynames look like this 'Dydd Sul', 'Dydd Llun', 'Dydd Mawrth', etc... so I think you can all see what problems are caused by Date.dayNames.substring(0, 3) !
c. All format strings will need anything like 'am','pm','Mon','Tues','Jan','Dec','st','rd'....etc removed and replaced with variables/properties so that they can be overridden/translated

Any feedback appreciated,
Cheers.

Condor
15 Oct 2008, 5:52 AM
Hello Friends,
Has there been any follow-up/progress in regards to this post. I am currently attempting to localise (localize for the US readers) to the Welsh language (cy-GB). Several obstacles I am encountering are due to the fact that the Date object/class has things like am and pm indicators hard-coded, as well as (incorrectly) assuming that short day names will always be the first 3 characters of the full dayname.

It would be nice if:
a. Date object had amIndicator (default to 'am') and pmIndicator (default to 'pm') properties that I could override to 'yb' and 'yp' respectively (Welsh) - would also need to remove any hard-coded 'am' and 'pm' strings in the format properties, to utilise the new values I have set.
b. Date object needs dayNamesShort and monthNamesShort (defaulting to Date.dayNames.substring(0, 3) and Date.monthNames.substring(0, 3)) so that I can override in Welsh. The problem is that in Welsh daynames look like this 'Dydd Sul', 'Dydd Llun', 'Dydd Mawrth', etc... so I think you can all see what problems are caused by Date.dayNames.substring(0, 3) !
c. All format strings will need anything like 'am','pm','Mon','Tues','Jan','Dec','st','rd'....etc removed and replaced with variables/properties so that they can be overridden/translated

Any feedback appreciated,
Cheers.

They can all be overridden!

Just adapt the following overrides to your language:

Ext.apply(Date.formatCodes, {
a: "(this.getHours() < 12 ? 'am' : 'pm')",
A: "(this.getHours() < 12 ? 'AM' : 'PM')"
});
Ext.apply(Date.parseCodes.S, {
s:"(?:st|nd|rd|th)"
});
Ext.apply(Date.parseCodes.a, {
c:"if (results[{0}] == 'am') {\n"
+ "if (h == 12) { h = 0; }\n"
+ "} else { if (h < 12) { h += 12; }}",
s:"(am|pm)"
});
Ext.apply(Date.parseCodes.A, {
c:"if (results[{0}] == 'AM') {\n"
+ "if (h == 12) { h = 0; }\n"
+ "} else { if (h < 12) { h += 12; }}",
s:"(AM|PM)"
});
Ext.apply(Date, {
getShortMonthName : function(month) {
return Date.monthNames[month].substring(0, 3);
},
getShortDayName : function(day) {
return Date.dayNames[day].substring(0, 3);
},
getMonthNumber : function(name) {
return Date.monthNumbers[name.substring(0, 1).toUpperCase() + name.substring(1, 3).toLowerCase()];
},
getSuffix : function() {
switch (this.getDate()) {
case 1:
case 21:
case 31:
return "st";
case 2:
case 22:
return "nd";
case 3:
case 23:
return "rd";
default:
return "th";
}
}
});

tequilatime
15 Oct 2008, 6:34 AM
They can all be overridden!

Just adapt the following overrides to your language:

...
Thanks Condor,
I'm aware that you are *able* to override all the methods and properties in the Date class. However, if the Date object was refactored slightly and had the improvements I suggested added, there would be no need to override so many methods, hence minimising the chance of mistakes (introducing bugs into a stable system) and future-proofing custom code.

eg, (silly example)
What if Date.formatCodes.a was altered to "(this.getHours() <= 12 ? 'am' : 'pm')"
My overriding code negates this change!

A far simpler (and elegant) solution is:
Date.formatCodes.a = "(this.getHours() < 12 ? '"+ Date.amIndicator +"' : '"+ Date.pmIndicator +"')";

Agreed?

Condor
15 Oct 2008, 6:50 AM
I agree with you on AM/PM, but is there actually a language/region that uses AM/PM, but with different names?
(there are a lots of languages/regions that don't use AM/PM, so for those you don't need to translate them)

For short day and month names the accessor functions should be used, so I don't see a need to have them parameterized (e.g. my dutch translation actually overrides getShortMonthName and getMonthNumber, because 'March' in dutch is 'maart', but the short name is 'mrt').

ps. Your solution doesn't work, because changing Date.amIndicator after Date.formatCodes.a is set doesn't change formatting.
It should be:

Date.formatCodes.a = "(this.getHours() < 12 ? this.amIndicator : this.pmIndicator)";

tequilatime
15 Oct 2008, 7:11 AM
I agree with you on AM/PM, but is there actually a language/region that uses AM/PM, but with different names?
(there are a lots of languages/regions that don't use AM/PM, so for those you don't need to translate them)

For short day and month names the accessor functions should be used, so I don't see a need to have them parameterized (e.g. my dutch translation actually overrides getShortMonthName and getMonthNumber, because 'March' in dutch is 'maart', but the short name is 'mrt').

ps. Your solution doesn't work, because changing Date.amIndicator after Date.formatCodes.a is set doesn't change formatting.
It should be:

Date.formatCodes.a = "(this.getHours() < 12 ? this.amIndicator : this.pmIndicator)";
Good spot on the code mistake and adds to my argument that I think it's a little backwards (and introduces bugs) having to override a whole lot of functionality just to change a language.

I'm probably way off the mark here (a total newbie in extjs world) but my philosophy has always been to keep language/locale details completely separate from core functionality. In an ideal world: (1) set a whole heap of properties in the language of your choice (default to English if not overridden) (2) happily call methods without ever having to know their inner workings - and get results back in the specified language.

If Date is further extended by the extjs team I will have to look through all methods and formatCodes to see if I need to override any. With the 'set properties' solution, the Date class uses the values that I specified at design-time and hence any number of new methods will 'automagically' translate without me writing a single line of code (and zero maintenance)!

Thanks a lot for your help, implementing your suggested fix now, just my 2c worth on the matter.

Cheers
ps. The answer to your question is 'yes' - the Welsh language uses 'yb' and 'yp'
pps. I hope my posts don't sound "harsh" - reading them back they do, just arguing a point and in no way dismissing yours! (5500 posts vs 3 ... Condor wins!)

francodacosta
11 Nov 2008, 3:19 PM
Hy,

I want to contribute with the Portuguese (pt-PT) translation that was missing

[CODE]/**
* Ext 2.2.0 - Portuguese/Portugal (pt_PT) Translation
* by Nuno Franco da Costa - francodacosta.com
* translated from ext-lang-en.js
* 11 Nov 2008
*/

Ext.UpdateManager.defaults.indicatorText = '<div class="loading-indicator">A carregar...</div>';

if(Ext.View){
Ext.View.prototype.emptyText = "";
}

if(Ext.grid.GridPanel){
Ext.grid.GridPanel.prototype.ddText = "{0} linha(s) seleccionada(s)";
}

if(Ext.TabPanelItem){
Ext.TabPanelItem.prototype.closeText = "Fechar aba";
}

if(Ext.LoadMask){
Ext.LoadMask.prototype.msg = "A carregar...";
}

Date.monthNames = [
"Janeiro",
"Fevereiro",
"Mar&ccedil;o",
"Abril",
"Maio",
"Junho",
"Julho",
"Agosto",
"Setembro",
"Outubro",
"Novembro",
"Dezembro"
];

Date.getShortMonthName = function(month) {
return Date.monthNames[month].substring(0, 3);
};

Date.monthNumbers = {
Jan : 0,
Feb : 1,
Mar : 2,
Apr : 3,
May : 4,
Jun : 5,
Jul : 6,
Aug : 7,
Sep : 8,
Oct : 9,
Nov : 10,
Dec : 11
};

Date.getMonthNumber = function(name) {
return Date.monthNumbers[name.substring(0, 1).toUpperCase() + name.substring(1, 3).toLowerCase()];
};

Date.dayNames = [
"Domingo",
"Segunda",
"Ter&ccedil;a",
"Quarta",
"Quinta",
"Sexta",
"Sabado"
];

Date.getShortDayName = function(day) {
return Date.dayNames[day].substring(0, 3);
};

if(Ext.MessageBox){
Ext.MessageBox.buttonText = {
ok : "OK",
cancel : "Cancelar",
yes : "Sim",
no : "N&atilde;o"
};
}

if(Ext.util.Format){
Ext.util.Format.date = function(v, format){
if(!v) return "";
if(!(v instanceof Date)) v = new Date(Date.parse(v));
return v.dateFormat(format || "Y/m/d");
};
}

if(Ext.DatePicker){
Ext.apply(Ext.DatePicker.prototype, {
todayText : "Hoje",
minText : "A data &eacute; anterior ao m&iacute;nimo definido",
maxText : "A data &eacute; posterior ao m

amorworx
12 Nov 2008, 12:29 AM
Goodmorning Ext Team,

I am fairly new to Ext (been investigating and using it since last summer) and currently I am building a "big" Webshop application with it. Because this webshop *must* support multiple languages and given the fact that Ext is component based I thought this shouldn't be much of a problem ... But, in fact I have been struggling with on-line switching the UI language. This has mainly to do with the fact that not all "text" properties have getters and setters. I think it would be a great addition to Ext if all components that expose text properties (headers, titles etc) have corresponding getter and setter methods. Maybe something to take into account for the next version ...

Cheers

Bert

Oberdan
13 Jan 2009, 9:13 AM
Hello all,

Today I found a problem with the pt_BR translation. The site I'm working on is utf-8 encoded, and the pt_BR translation still uses HTML entities, that are not displayed correctly. So I changed the entities for the corresponding utf-8 characters (and fixed a typo or two).

It's working fine, at least for me. Maybe it can be useful for someone else, so I'm attaching the file.

[]'s

Oberdan

jbum
16 Jan 2009, 5:07 PM
Is it possible to have the localized strings as maps or something and have the ExtJS code refer to it indirectly depending on the locale?

Looks like most of these efforts change the strings directly on a prototype or class.

hempslayer
1 Sep 2009, 12:50 AM
Corrected Ukrainian translations in UTF-8 encoding

aconran
1 Sep 2009, 2:37 AM
Thanks for you contribution hempslayer.

mystix
1 Sep 2009, 2:53 AM
Corrected Ukrainian translations in UTF-8 encoding

added to SVN rev 5261.

Vagustolga
29 Oct 2009, 1:19 PM
Correct Turkish Translation
in "Real" UTF-8 file :)

mystix
29 Oct 2009, 2:00 PM
Correct Turkish Translation
in "Real" UTF-8 file :)

what's a "real" utf-8 file?
you mean the ones we've had thus far were "fake"? :-?


p.s. Bleach fan *hi-five* ;)

Vagustolga
30 Oct 2009, 1:21 AM
The orginal poster of the translation file didn't actually save the file in UTF-8 and messed up the characters. I corrected them and save the file actually in UTF-8

Example:
this means February but not write with correct chars it
must be Şubat
Þžubat -> Şubat



p.s. Bleach rocksss \:D/

david.gabrichidze@ugt.ge
26 Nov 2011, 2:31 PM
Here is localization for Georgian language ext-lang-ka.js


/*
* Ext - JS Library 1.0 Alpha 3 - Rev 4
* Copyright(c) 2006-2007, Jack Slocum.
*
* http://www.extjs.com/license.txt
*/


Ext.UpdateManager.defaults.indicatorText = '<div class="loading-indicator">მიმდინარეობს ჩატვირთვა...</div>';


Date.monthNames =
["იანვარი",
"თებერვალი",
"მარტი",
"აპრილი",
"მაისი",
"ივნისი",
"ივლისი",
"აგვისტო",
"სექტემბერი",
"ოქტომბერი",
"ნოემბერი",
"დეკემბერი"];


Date.dayNames =
["კვირა",
"ორშაბათი",
"სამშაბათი",
"ოთხშაბათი",
"ხუთშაბთი",
"პარასკევი",
"შაბათი"];


Ext.apply(Ext.grid.GridView.prototype, {
sortAscText: "სორტირება ზრდადობით",
sortDescText: "სორტირება კლებადობით",
lockText: "სვეტის დაბლოკვა",
unlockText: "სვეტის განბლოკვა",
columnsText: "სვეტები"
});


Ext.apply(Ext.DatePicker.prototype, {
todayText: "დღევანდელი",
todayTip: "{0} (ჰარი)",
minText: "ეს თარიღი მინიმალურ დაშვებულამდეა",
maxText: "ეს თარიღი მაქსიმალური დაშვებულის შემდეგაა",
format: "d.m.Y",
disabledDaysText: "",
disabledDatesText: "",
monthNames: Date.monthNames,
dayNames: Date.dayNames,
nextText: 'შემდეგი თვე (Control+მარჯვნივ)',
prevText: 'წინა თვე (Control+მარცხნივ)',
monthYearText: 'თვის არჩევა (Control+ზემოთ/ქვემოთ წლის არჩევისთვის)',
startDay: 1 // Week start on Monday
});


Ext.MessageBox.buttonText = {
ok: "OK",
cancel: "გაუქმება",
yes: "დიახ",
no: "არა"
};


Ext.apply(Ext.PagingToolbar.prototype, {
beforePageText: "გვერდი",
afterPageText: "{0}-დან",
firstText: "პირველი გვერდი",
prevText: "წინა გვერდი",
nextText: "მომდევნო გვერდი",
lastText: "ბოლო გვერდი",
refreshText: "განახლება"
});


Ext.TabPanelItem.prototype.closeText = "ჩანართის დახურვა";


Ext.apply(Ext.form.ComboBox.prototype, {
loadingText: "ჩატვირთვა..."
});

atc4545
29 Nov 2011, 12:23 AM
I am volonteer to translate (and maintain translation) of Ext in french.
What would be useful is a full complete exemple with all widgets in action, to valid translation results.


__________________
Buy Apple Accessories (http://www.chingtown.com/apple-accessories.html) goods online and earn money from dropship.