我正在尝试在我的应用程序(英语和希伯来语)中实现多语言。 我创建了2个字符串文件,并实现了应支持多语言功能的所有方法。 但是,当我运行该应用程序并在对话框中选择“希伯来语”时,布局从左到右更改为从右到左(因为它应该在希伯来语中),但是语言没有改变。有人可以帮我解决这个问题吗?
public class SubscriptionsController : ApiController
{
private MyDatabaseContext _db = new MyDatabaseContext();
// POST: api/Subscriptions
[HttpPost]
[ResponseType(typeof(Subscription))]
[Route("~/api/Subscriptions")] // This shouldn't be needed
public async Task<IHttpActionResult> PostSubscriptionAsync(Subscription subscription)
{
if (!ModelState.IsValid)
return BadRequest(ModelState);
_db.Subscriptions.Add(subscription);
await _db.SaveChangesAsync();
// Should I be required to specify the controller?
var routeValues = new { controller = "Subscriptions", id = subscription.ID };
return CreatedAtRoute("DefaultApi", routeValues, subscription);
}
}
答案 0 :(得分:2)
Android拥有自己的API,可以处理不同的语言环境。 用户在Android系统设置中设置其语言环境。 您无需询问用户的语言环境。
只需将英语字符串放入res / values / strings.xml,将希伯来语字符串放入res / values-iw / strings.xml。 也可以通过使用开始/结束而不是左/右来处理布局xml中的ltr / rtl。
编辑: 我不知道是否可以像在setLocale()中一样更改应用程序的语言环境。
您应该关闭您的应用程序并将其从应用程序堆栈中删除。 然后在Android设置中将语言更改为希伯来语,然后重新打开您的应用。
如果您现在在布局.xml中定义了rtl布局,但是没有希伯来字符串,那么您的strings.xml可能有问题。
您的strings.xml可能没有正确的路径(res / values-iw / strings.xml)。 否则strings.xml的内容可能是错误的。可能与您的英语string.xml中的字符串ID不同。
您还可以打印出您当前的语言环境,以查看是否将其设置为“ iw”,如此处所述: 14389349
答案 1 :(得分:1)
尝试更改
Configuration configuration = new Configuration();
到
Configuration configuration = getBaseContext().getResources().getConfiguration();
答案 2 :(得分:1)
本地化步骤:
1)从您拥有的每个文本中创建一个字符串。快捷方式是转到文本,单击文本,然后在左侧应出现一个黄色灯泡。单击它,然后单击Extract Resource
,它将为您的文本生成一个名称,以添加到Strings.xml中。对每个文本都执行此操作。
2)转到“ Res”>“ Values”文件夹中的Strings.xml文件。右上角应该有蓝色文本,您可以单击Open Editor
单击它。
3)单击左上方的小世界图标。找到希伯来语。选择它。单击确定。现在,您已经为希伯来语语言成功创建了一个单独的Strings.xml。
4)返回英文Strings.xml文件,再次单击Open Editor
,您将看到所有存储为字符串的文本。单击一个字符串,在底部,您将看到“密钥”(它是字符串的ID名称),“默认值”(是英语版本)和“翻译”,您必须手动输入要翻译的英语单词的希伯来语翻译。对您要翻译的所有内容执行此操作。请注意,您在Translation字段中输入的任何内容都会自动添加到strings.xml(iw)文件中。
5)第4步还有另一种方法,即转到希伯来语Strings.xml并在此处手动输入信息,但是您必须确保“ Key”(字符串)与英语相同。因此,根据我的经验,第4步使其变得更容易。
6)您可以打开希伯来语Strings.XML来手动编辑您在其中输入的翻译,以防您想更改已经输入的较长文本。
所以它看起来像这样:
strings.xml
<resources>
<string name="app_name">KotlinKennyGame</string>
<string name="test">This is a test.</string>
</resources>
activity_main.xml
<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/test"
/>
strings.xml(iw)
<resources>
<string name="app_name">KotlinKennyGame</string>
<string name="test">זה מבחן</string>
</resources>