可能重复:
多语言数据库的模式
这是一个例子:
[ products ]
id (INT)
name-en_us (VARCHAR)
name-es_es (VARCHAR)
name-pt_br (VARCHAR)
description-en_us (VARCHAR)
description-es_es (VARCHAR)
description-pt_br (VARCHAR)
price (DECIMAL)
Run Code Online (Sandbox Code Playgroud)
问题是:每种新语言都需要修改表结构.
这是另一个例子:
[ products-en_us ]
id (INT)
name (VARCHAR)
description (VARCHAR)
price (DECIMAL)
[ products-es_es ]
id (INT)
name (VARCHAR)
description (VARCHAR)
price (DECIMAL)
Run Code Online (Sandbox Code Playgroud)
问题是:每种新语言都需要创建新表,并且"价格"字段在每个表中都是重复的.
这是另一个例子:
[ languages ]
id (INT)
name (VARCHAR)
[ products ]
id (INT)
price (DECIMAL)
[ translation ]
id (INT, PK)
model (VARCHAR) // product
field (VARCHAR) // name
language_id (INT, …Run Code Online (Sandbox Code Playgroud) 我有一个.NET 4.0 WPF应用程序,用户可以在其中更改语言(文化)我只是让用户选择一种语言,创建一个相应的CultureInfo并设置:
Thread.CurrentThread.CurrentCulture = cultureInfo;
Thread.CurrentThread.CurrentUICulture = cultureInfo;
Run Code Online (Sandbox Code Playgroud)
在C#代码中,这很好用.然而,在WPF控制中,文化仍然是美国的.这意味着例如日期将以美国格式显示,而不是对当前文化正确的日期.
显然,这不是一个错误.根据MSDN和StackOverflow上的一些博客文章和文章,WPF语言不会自动遵循当前的文化.在您执行此操作之前,它是en-US:
FrameworkElement.LanguageProperty.OverrideMetadata(
typeof(FrameworkElement),
new FrameworkPropertyMetadata(
XmlLanguage.GetLanguage(CultureInfo.CurrentUICulture.IetfLanguageTag)));
Run Code Online (Sandbox Code Playgroud)
请参阅wpf中的StringFormat Localization问题.
我不完全理解这里发生了什么.似乎所有frameworkelements上的Language属性都设置为当前文化.无论如何,它的工作原理.我在应用程序启动时执行此操作,现在所有控件都按预期工作,例如日期根据当前文化格式化.
但现在的问题是:根据MSDN FrameworkElement.LanguageProperty.OverrideMetadata只能调用一次.事实上,如果我再次调用它(当用户更改语言时),它将抛出异常.所以我还没有真正解决我的问题.
问题:如何在我的应用程序生命周期中不止一次地和可靠地更新WPF中的文化?
(我在研究时发现了这个:http://www.nbdtech.com/Blog/archive/2009/03/18/getting-a-wpf-application-to-pick-up-the-correct-regional.aspx and it似乎他有一些工作在那里.但是,我无法想象如何在我的应用程序中执行此操作.似乎我必须在所有打开的窗口和控件中更新语言并刷新所有现有绑定等.)
我在assets文件夹中有几个html文件.我该如何本地化它们?我唯一的选择是根据区域设置放一些硬编码来选择正确的文件?
我正在开发一个Java App,我有一个timeStamp(in long).我可以轻松地使用此代码将其更改为公历日期:
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(timeStamp);
Run Code Online (Sandbox Code Playgroud)
但我需要在Jalali日历中有日期.我搜索但没有找到任何好的图书馆.你知道一个可靠而好的库来转换(或用Jalali格式创建日期timeStamp)吗?我不需要实现或算法,因为这个问题太麻烦并且有很多规则,我需要一个可靠的解决方案
我的开源Android应用程序采用Android方式进行国际化,使用strings.xml文件.
社区有许多来自许多国家的人,他们愿意使用协作网站贡献/改进翻译.
有Launchpad,但它只支持gettext格式,所以我们必须使用脚本,不是很方便.
什么网站方便翻译开源Android应用程序?
任何人都必须能够在没有任何事先批准的情况下开始贡献.
我有一个打印计算金钱值的应用程序,我想用默认的货币格式显示该值.
例如在欧洲你会写:
1.000,95€
在美国,我想你会写
1,000.95 $
在其他货币中,小数部分显示的值或多或少,在美国,它将是2,但在日本则为0.
如何获得所有现有货币的确切格式?
使用DateFormat的实例格式化和解析Java Date(或Calendar)类非常容易,即我可以将当前日期格式化为短的本地化日期,如下所示:
DateFormat formatter = DateFormat.getDateInstance(DateFormat.SHORT, Locale.getDefault());
String today = formatter.format(new Date());
Run Code Online (Sandbox Code Playgroud)
我的问题是:我需要获得这个本地化的模式字符串(即类似的东西"MM/dd/yy").这应该是一项微不足道的任务,但我找不到提供者......
您是如何在已经参与的实际项目中实施国际化(i18n)的?
在我阅读Joel的着名文章之后,我开始兴趣制作软件跨文化,绝对最低限,每个软件开发人员绝对必须知道Unicode和字符集(没有借口!).但是,除了确保我尽可能使用Unicode字符串之外,我还没有能够在一个真实的项目中利用它.但是将所有字符串设置为Unicode并确保您了解所使用的所有内容的编码只是i18n冰山的一角.
我迄今为止所做的一切都是由一群受控制的美国英语人士使用,或者在推动项目实施之前我们没有时间去做.因此,我正在寻找人们在实际项目中使软件更加本地化的任何提示或战争故事.
有人能指出我如何本地化与HighCharts js文件中硬编码的日期相关的字符串.例如,我希望图表显示本地化的值'Fév',而不是x轴上的默认'Feb'日期标签.我尝试通过在实例化图表之前设置语言对象上的选项来实现本地化:
Highcharts.setOptions({
lang: {
months: ['Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre'],
weekdays: ['Dimanche', 'Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi']
} });
Run Code Online (Sandbox Code Playgroud)
但图表仍显示默认值.
js解决问题.
我想根据所选语言创建具有许多翻译路线的应用程序.我曾经用3种方法在多语言网站中创建URL来描述它.
在这种情况下,它应该是所提到主题的第一种方法,所以:
假设我已经设置默认语言pl和其他2种语言en和fr.我只有3页 - 主页,联系页面和关于页面.
网站的网址应该是这样的:
/
/[about]
/[contact]
/en
/en/[about]
/en/[contact]
/fr
/fr/[about]
/fr/[contact]
Run Code Online (Sandbox Code Playgroud)
而[about]和[contact]应根据所选语言的翻译,例如英语应该留下contact,但波兰应该kontakt等等.
如何尽可能简单地完成?
localization ×10
android ×3
java ×2
.net ×1
calendar ×1
database ×1
date ×1
datetime ×1
highcharts ×1
javascript ×1
jquery ×1
laravel ×1
laravel-4 ×1
locale ×1
multilingual ×1
mysql ×1
php ×1
routing ×1
translation ×1
unicode ×1
wpf ×1